0

这是我想要做的:我希望能够很好地调试我的应用程序。

我有这个静态的 html::debug($var)我想返回它使用的类和方法以及变量名及其内容,而不知道它会提前使用的类的名称。

如果我使用_ CLASS _getClass()它会返回它被实例化的类 HTML。我想返回使用它的类和方法。

一个例子,它不是实际的代码:

class HTML
{
    static function debug($var)  {
            echo "<pre style=\"border: 1px solid #000; height: {9em};
                  overflow: auto; margin: 0.5em;\">"; 

            echo '<b><u><font color = brown> In '.__CLASS__.'</u> : </font></b>';

或者

            echo '<b><u><font color = brown> In '.get_class($this).'</u> : </font></b>';
            var_dump($var);    
            echo "</pre>\n";
     }
}

Class MyClass
{
      function myMethod()   {
      $variable = 'my_temp_var';
      html::debug($variable);
      }
}

给你,谢谢。

4

3 回答 3

0

如何将作为额外参数发送到调用类的调试方法?喜欢:

html::debug($variable,$this);

然后使用get_class($classReceived)

于 2013-09-26T09:04:47.260 回答
0

这是不可能的,这表明你走错了路。一个方法永远不需要知道是谁调用了它;如果它需要改变它的行为,那么告诉它如何使用参数。

好吧,我撒了谎:从技术上讲,它可能的debug_backtrace,但这是一个永远不应该在生产代码中使用的解决方案。但在您的情况下,这似乎正是您想要的:打印调试信息。

于 2013-09-26T09:02:14.157 回答
0

我能想到的唯一方法是使用调用堆栈。我认为PHP中没有其他本机可以做你想做的事吗?可能是错的。

因此,如果您要使用类似..

$calledFrom = debug_backtrace( DEBUG_BACKTRACE_PROVIDE_OBJECT, 1 );

这将为您提供上一个调用堆栈条目的数组。由于多种原因,它确实不理想,但它会解决您的问题。

注意:最后一个参数是限制,我相信这只是 5.4。如果您使用的版本早于此,请删除。

有关完整文档和输出,请参见此处:http: //php.net/manual/en/function.debug-backtrace.php

于 2013-09-26T09:06:38.637 回答