PHP使用后期静态绑定来获取调用函数


PHP use late static binding to get calling function?

是否可以通过使用后期静态绑定来获取调用函数的信息(文件名、行、函数…)?

<?php
class Log{
    public static function write($msg){
        $line = ??;
        $msg = date('Y-m-d H:i:s').' '.$line.' '.$msg;
    }
}
Log::write("wuhuu!"); // write new log entry including >>this<< line/filename/..
?>

次I为used debug_backtrace()new 'Exception+getTrace()。是否可以(或更容易)使用一些超级特殊的后期静态绑定功能关键字/函数?

不幸的是,debug_backtrace可能是最好的,尽管这效率很低。

另一种选择是将行和文件传递回日志方法。。。

Log::write("wuhuu!", __LINE__, __FILE__);

这很痛苦,但我看不到其他解决方案。

您应该检查XDebug扩展:

xdebug_call_file(),xdebug_call_line(),xdebug_call_class(),xdebug_call_function()

在生产环境中不建议使用此类函数(XDebug,debug_backtrace())。

是,

PHP为它运行的任何脚本提供了大量预定义的常量。然而,这些常量中的许多是由各种扩展创建的,并且只有当这些扩展可用时才会出现,无论是通过动态加载还是因为它们已在中编译

有八个神奇的常数,根据它们的使用位置而变化。例如,LINE的值取决于脚本中使用它的行。这些特殊常数不区分大小写,如下所示:

______方法__

http://php.net/manual/en/language.constants.predefined.php

但您仍然需要将数据提供给类似log的方法(_LINE_,_method_)。

对于全局警告,您可以使用http://www.php.net/manual/en/function.set-error-handler.php

除此之外。。