问题
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 __FILE__
in the function it will use the line and file the function definition is in.
but i dont want to have to pass __LINE__
and __FILE__
into the function every time.
so if i set them as the default params, do they come from the function definition, or where it is being called from?
回答1:
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.
回答2:
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();
回答3:
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.
回答4:
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
来源:https://stackoverflow.com/questions/3387320/function-nameparam-line-line-file-file