PHP показывает имена всех объявленных классов?


Допустим, у меня есть этот код:

<?php
class hello {
    var $greeting = "hello";
    function hello(){
        echo $this->greeting;
        return;
    }
}

$hello1 = new hello;
$hello2 = new hello;
$hello4 = new hello;
?>

Как заставить его повторять все имена создаваемых объектов (и, если возможно, их соответствующий класс), чтобы он отражал (возможно, в массиве) "привет1=> привет, привет2=> привет, привет4=> привет".

Если это невозможно, есть ли какой-либо способ указать имя экземпляра внутри класса, что-то вроде echo имя_экзамена ($this); даст мне "привет1". Спасибо.

Author: VolkerK, 2009-05-05

1 answers

Вы можете вызвать get_defined_vars, чтобы получить массив всех присутствующих объектов, а затем использовать get_class, чтобы получить имена классов для каждого из них (код не проверен, но он должен работать):

$vars = array();
foreach (get_defined_vars() as $var) {
    $vars[$var] = get_class($var);
}

К вашему сведению, то, что вы называете "объявленным классом", более известно как "объект".

Ваш второй вопрос невозможен. Возьмем, к примеру:

$hello1 = $hello2 = new hello();

Теперь, если я позвоню instance_name, должно ли оно вернуть "привет1" или "привет2"?

 9
Author: Samir Talwar, 2009-05-04 21:52:08