function name($param, $line = __LINE__, $file = __FILE__) {};

后端 未结 4 2019
名媛妹妹
名媛妹妹 2020-12-19 08:30

Is it possible to have a function automatically contain the line number and the file that the function was CALLED in,

as if i call __LINE__ or __F

相关标签:
4条回答
  • 2020-12-19 08:53

    It's so late but maybe can be useful, you can use get_called_class(), for the name of class who is called, and do not pass like a parameter insted of CLASS.

    0 讨论(0)
  • 2020-12-19 09:00

    The only way would be using debug_backtrace(), but as the name says: it is for debugging. Your code should not attach any meaning or functionality in production based on where/when it's called.

    0 讨论(0)
  • 2020-12-19 09:05

    if you want to use this information in some kind of error message, there is a function trigger_error() which will raise PHP native error, so, therefore, it will be shown in usual PHP manner - with filename, line number and supplied text.

    Most neat feature of this function is behaving according to current error handling settings:

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

    will print out directly to screen an error message like this:

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

    very handy for developing
    while this code

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

    will be put into error log for the future reference
    obligatory for the production

    0 讨论(0)
  • 2020-12-19 09:16

    Doing what you suggest doesn't seem to work.

    You can do it like this, but I'm not sure why you want to do it and that there isn't a better approach to what you are trying to achieve - see 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();
    
    0 讨论(0)
提交回复
热议问题