代码之家  ›  专栏  ›  技术社区  ›  Yifan

PHP是否显示所有声明类的名称?

  •  3
  • Yifan  · 技术社区  · 15 年前

    假设我有这个代码:

    <?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实例的名称($this);会得到“hello1”。谢谢。

    1 回复  |  直到 15 年前
        1
  •  9
  •   Samir Talwar PruthviRaj Reddy    15 年前

    你可以打电话 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”?