假设我有这段代码:

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

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

如何让它回显实例化对象的所有名称(如果可能的话,它们各自的类),以便回声(可能在数组中)&quot; hello1 =&gt;你好,hello2 =&gt;你好,hello4 =&gt;你好&QUOT;

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

有帮助吗?

解决方案

您可以调用 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'?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top