6

是否可以让函数自动包含行号和调用该函数的文件,

就好像我调用__LINE____FILE__在函数中一样,它将使用函数定义所在的行和文件。

但我不想每次都传递__LINE__并进入函数。__FILE__

所以如果我将它们设置为默认参数,它们是来自函数定义,还是从哪里调用它?

4

4 回答 4

6

按照你的建议做似乎没有用。

您可以这样做,但我不确定您为什么要这样做,并且没有更好的方法来实现您想要实现的目标 - 请参阅Wrikken 的回答

<?php

function test() {
    $backtrace = debug_backtrace();
    $last = $backtrace[0];
    echo "{$last['function']}() called from {$last['file']} line {$last['line']}\r\n"; 
}



test();
于 2010-08-02T11:42:43.423 回答
5

唯一的方法是使用debug_backtrace(),但顾名思义:它是用于调试的。您的代码不应根据调用的位置/时间在生产中附加任何含义或功能。

于 2010-08-02T11:42:50.527 回答
0

太晚了,但也许有用,您可以使用 get_call_class() 作为被调用的类的名称,并且不要像CLASS的参数那样传递。

于 2016-02-08T19:45:56.977 回答
-1

如果您想在某种错误消息中使用此信息,则有一个函数trigger_error()会引发 PHP 本机错误,因此,它将以通常的 PHP 方式显示 - 带有文件名、行号和提供的文本。

此功能最简洁的功能是根据当前的错误处理设置进行操作:

ini_set('display_errors',1);
trigger_error("Horrible bug found!");

将直接打印出来以显示如下错误消息:

Notice: Horrible bug found! in /path/file.php on line 2


这段代码的开发非常方便

ini_set('display_errors',0);
ini_set('log_errors',1);
trigger_error("Horrible bug found!");

将被放入错误日志以供将来参考
生产时必须使用

于 2010-08-02T12:29:13.193 回答