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". Спасибо.
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"?