以下是我想要做的事情:我希望能够很好地调试我的应用程序。
我有静态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);
}
}
你去,谢谢。
答案 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