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

StackOverflow https://stackoverflow.com/questions/822223

  •  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'?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top