函数名称($ param,$ line = __LINE __,$ file = __FILE__){};

时间:2010-08-02 11:38:16

标签: php function defaults

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

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

但我不想每次都要将__LINE____FILE__传递给函数。

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

4 个答案:

答案 0 :(得分:5)

做你的建议似乎不起作用。

你可以这样做,但我不确定你为什么要这样做,并且没有更好的方法来实现你想要实现的目标 - 见Wrikken's answer

<?php

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



test();

答案 1 :(得分:4)

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

答案 2 :(得分:0)

现在已经太晚了,但也许有用,你可以使用get_called_class()作为被调用类的名称,而不是像 CLASS 那样的参数传递。

答案 3 :(得分:-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!");

将被输入错误日志以供将来参考
生产必须的