假设我有这个代码:
<?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”。谢谢。
你可以打电话 get_defined_vars 获取所有对象的数组,然后使用 get_class 要获取每个类的类名(代码没有测试,但应该可以工作):
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”?
instance_name