0

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

<?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/..
?>

以前used debug_backtrace()new \Exception+ getTrace()。_ 是否有可能(或更容易)使用一些很棒的超级特殊后期静态绑定功能关键字/功能?

4

3 回答 3

1

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

另一种方法是将行和文件传递回您的日志方法......

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

这是一个痛苦的屁股,但我看不到另一种解决方案。

于 2012-08-21T13:33:49.610 回答
1

您应该检查 XDebug 扩展:

xdebug_call_file()、xdebug_call_line()、xdebug_call_class()、xdebug_call_function()

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

于 2012-08-21T13:12:50.490 回答
1

是的,

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捕获那些警告

除此之外..

于 2012-08-21T13:09:06.867 回答