返回实际使用的类和方法的静态方法

时间:2013-09-26 09:00:41

标签: php

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

我有静态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);
      }
}

你去,谢谢。

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

如何将调试类作为额外参数发送给调试方法?像:

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

然后使用get_class($classReceived)

答案 2 :(得分:0)

我能想到的唯一方法就是使用callstack。我不认为PHP本身还有什么可以做你想做的事情吗?可能是错的。

所以如果你要使用类似的东西

$calledFrom = debug_backtrace( DEBUG_BACKTRACE_PROVIDE_OBJECT, 1 );

这将为您提供上一个callstack条目的数组。由于多种原因,它真的不太理想,但它会解决你的问题。

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

请点击此处查看完整文档和输出:http://php.net/manual/en/function.debug-backtrace.php