代码之家  ›  专栏  ›  技术社区  ›  Hailwood

函数名($param,$line=uu line_uu,$file=uu file_uuu)

  •  6
  • Hailwood  · 技术社区  · 14 年前

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

    仿佛我呼唤 __LINE__ __FILE__ 在函数中,它将使用函数定义所在的行和文件。

    但我不想通过 第二行 一个文件 每次都会进入功能。

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

    4 回复  |  直到 8 年前
        1
  •  4
  •   IMSoP    11 年前

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

        2
  •  5
  •   Community Egal    7 年前

    照你的建议去做似乎行不通。

    你可以这样做,但我不知道你为什么要这样做,而且没有更好的方法来实现你想要实现的目标-看 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();
    
        3
  •  0
  •   carlosalvet    8 年前

    现在已经很晚了,但可能有用,您可以使用get_called_class()作为被调用的类的名称,并且不要像参数insted那样传递 .

        4
  •  -1
  •   Your Common Sense    14 年前

    如果要在某种类型的错误消息中使用此信息,则有一个函数 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!");
    

    将被放入错误日志以供将来参考
    生产所必需的