3

可以说我有这个代码:

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

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

我如何让它回显实例化对象的所有名称(如果可能,它们各自的类),以便它回显(可能在数组中)“hello1 => hello,hello2 => hello,hello4 => hello”。

如果这是不可能的,有没有办法从类中告诉实例的名称,比如 echo instance_name($this); 会让我“hello1”。谢谢。

4

1 回答 1

9

您可以调用get_defined_vars来获取所有存在的对象的数组,然后使用get_class来获取每个对象的类名(代码未经测试,但它应该可以工作):

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

仅供参考,您所说的“声明的类”更广为人知的是“对象”。

你的第二个问题是不可能的。举个例子:

$hello1 = $hello2 = new hello();

现在,如果我打电话instance_name,它应该返回“hello1”还是“hello2”?

于 2009-05-04T21:52:08.903 回答