【问题标题】:PHP show names of all declared classes?PHP显示所有声明的类的名称?
【发布时间】:2010-10-23 18:15:45
【问题描述】:

假设我有这个代码:

<?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”。谢谢。

【问题讨论】:

  • 不想编辑标题,但这有点误导。只声明了一个类,你好。您正在寻找这个(或任何其他)类的实例以及引用这些实例的变量。

标签: php class instance-variables


【解决方案1】:

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

【讨论】:

  • True.. 并在必要时与 is_object 结合以找出哪些变量是对象
  • 好的,谢谢,我正在研究 get_defined_vars(),但我不知道对象也在那里,我会再次感谢您,谢谢。
猜你喜欢
  • 2011-05-31
  • 2012-02-27
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 2011-11-21
  • 1970-01-01
相关资源
最近更新 更多