1
mcfog 2019-07-24 11:23:02 +08:00 1
static::class 是 late binding 的,或者 get_class($this),__FUNCTION__永远是字面上的那个,如果你要的是类似 debug log 的功能,那要的可能是调用你这个基类方法的那个方法的名字,那就只能从 backtrace 里拿
另外,我觉得你可能更需要的是 xdebug |
2
ben1024 2019-07-24 13:04:52 +08:00
解析 debug_backtrace() 里面的参数,
https://www.php.net/manual/zh/function.debug-backtrace.php ```php <?php function generateCallTrace() { $e = new Exception(); $trace = explode("\n", $e->getTraceAsString()); // reverse array to make steps line up chronologically $trace = array_reverse($trace); array_shift($trace); // remove {main} array_pop($trace); // remove call to this method $length = count($trace); $result = array(); for ($i = 0; $i < $length; $i++) { $result[] = ($i + 1) . ')' . substr($trace[$i], strpos($trace[$i], ' ')); // replace '#someNum' with '$i)', set the right ordering } return "\t" . implode("\n\t", $result); } ?> ``` |