这就是我想做的:我希望能够很好地调试我的应用程序。
我有这个静态 html::d ebug($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);
}
}
好了,谢谢。
如何作为额外的参数发送到调试调用类的方法?喜欢:
html::debug($variable,$this);
然后使用get_class($classReceived)
我能想到的唯一方法是使用调用堆栈。我不认为 PHP 中还有其他东西可以做你想做的事?可能是错的。
所以如果你要使用类似的东西..
$calledFrom = debug_backtrace( DEBUG_BACKTRACE_PROVIDE_OBJECT, 1 );
这将为您提供上一个调用堆栈条目的数组。由于多种原因,它确实不理想,但它会解决您的问题。
注意:最后一个参数是限制,我相信这只是 5.4。如果您使用的是早于此版本的版本,请删除。
有关完整文档和输出,请参阅此处:http://php.net/manual/en/function.debug-backtrace.php
这是不可能的,这表明你走错了路。方法永远不需要知道谁调用了它;如果它需要改变其行为,则告诉它如何使用参数。
好吧,我撒谎了:从技术上讲,可以通过debug_backtrace
,但这是一个永远不应该在生产代码中使用的解决方案。但似乎在您的情况下,这正是您想要的:打印调试信息。