PHP动态引用对象

时间:2012-09-16 15:50:17

标签: php oop dynamic reference

我正在尝试找到一种方法在所有现有对象上使用print_r(),而不必手动将它们作为参数传递给函数。目前使用它进行调试并以这种方式执行:

function($obj1 as null){

// insert styling here

    print_r(get_object_vars($obj1));

// insert more styling

}

现在,我必须对每个页面上的每个对象使用此功能。管理变得很多。如果只有一个函数可以使用某种集合来输出使用get_object_vars的对象变量,那就太好了。

在写这篇文章时,我考虑过为每个对象创建一个包含变量的类。然后在我的每个类的__construct中,使用该对象将自己分配给新类。然而,这将是很多工作,似乎效率低下。

2 个答案:

答案 0 :(得分:0)

看起来你真的想要一个调试器!但是,如果失败,我认为你是正确的,动态地(在任何时候存在的所有对象上)的唯一真正方法是让它们注册一个调试类。你可以编写一个这样做的类,让所有其他的类扩展到那个类(尽管它更依赖于你拥有的任何现有的类层次结构,并且可能会破坏垃圾收集器!

保存一些代码的另一个部分解决方案是在每次调试调用时列出要在数组中输出的对象,并循环遍历它们。

foreach(array('var1', 'var2', 'var3') as $name) {
    debug($$name);
}

Variable variables

答案 1 :(得分:0)

这可能是你想要的吗?

http://php.net/manual/en/function.get-defined-vars.php

该页面上有许多注释解释了如何将该函数用于各种目的(一个可能相关的只返回您的变量)。

即使这样仍然只在当前范围内执行变量,并且在调用get_defined_vars之前已经声明了变量。