0

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

function($obj1 as null){

// insert styling here

    print_r(get_object_vars($obj1));

// insert more styling

}

现在,我必须为每个页面上的每个对象使用这个函数。管理起来变得很多。最好只有一个函数使用某种集合来使用 get_object_vars 输出对象变量。

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

4

2 回答 2

0

这可能是你要找的吗?

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

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

即便如此,它仍然只处理当前范围内的变量以及在调用 get_defined_vars 之前已声明的变量。

于 2012-09-16T16:06:32.697 回答
0

看起来你真的想要一个调试器!但是如果我认为你是对的,那么动态地(在任何时候存在的所有对象上)唯一真正的方法是让它们向调试类注册。您可以编写一个执行此操作的类,并让所有其他类扩展该类(尽管它宁愿踩到您拥有的任何现有类层次结构,并且可能也会破坏垃圾收集器!

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

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

变量变量

于 2012-09-16T16:03:56.980 回答