PHP показывает имена всех объявленных классов?
-
03-07-2019 - |
Вопрос
Допустим, у меня есть этот код:
<?php
class hello {
var $greeting = "hello";
function hello(){
echo $this->greeting;
return;
}
}
$hello1 = new hello;
$hello2 = new hello;
$hello4 = new hello;
?>
Как заставить его отображать все имена созданных объектов (и, если возможно, их соответствующий класс), чтобы он отображался (возможно, в массиве) " hello1 = > привет, привет2 = > привет, hello4 = > Привет & Quot;. р>
Если это невозможно, есть ли способ сообщить имя экземпляра из класса, например, echo instance_name ($ this); получит меня "привет1". Спасибо.
Решение
Вы можете вызвать get_defined_vars
, чтобы получить массив всех присутствующих объектов, а затем использовать get_class
, чтобы получить имена классов для каждого (код не проверен, но это должно работать):
$vars = array();
foreach (get_defined_vars() as $var) {
$vars[$var] = get_class($var);
}
К вашему сведению, что вы называете "объявленным классом"? более известен как «объект».
Ваш второй вопрос невозможен. Взять, к примеру:
$hello1 = $hello2 = new hello();
Теперь, если я вызову имя_экземпляра
, должен ли он вернуть 'hello1' или 'hello2'?