关于 PHP 的__FUNCTION__的作为默认参数的问题
本文介绍了关于 PHP 的__FUNCTION__的作为默认参数的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
最近在重构代码的日志部分代码,想实现自动输出正在运行的是那个 function ,便于调试。 目前的实现大约是这样
trait log_helper {
protected function simple_log($msg, $func=__FUNCTION__) {
....
}
}
class Foo {
use log_helper;
public function bar() {
...
$this->simple_log($msg);
...
}
}
但是这样的话日志输出的$func 永远是simple_log,于是只能这么用:
$this->simple($msg, __FUNCTION__);
有没有别的方法可以简单的输出函数名称,而不用想上面调用的时候传同一个__FUNCTION__ ?
解决方案
trait log_helper
{
protected function simple_log($msg, $func = null)
{
$func || $func = end(debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT, 2))['function'];
....
}
}
class Foo
{
use log_helper;
public function bar()
{
...
$this->simple_log($msg);
...
}
}
补充一下楼上说获取类名的,也还有一些方法
比如get_called_class()
或者statis::class
这篇关于关于 PHP 的__FUNCTION__的作为默认参数的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文