关于 PHP 的__FUNCTION__的作为默认参数的问题

2016-12-14 15:17:17 +08:00
 wgjak47

最近在重构代码的日志部分代码,想实现自动输出正在运行的是那个 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__?

2258 次点击
所在节点    PHP
7 条回复
chenset
2016-12-14 15:22:03 +08:00
debug_backtrace 是一个思路.
chenset
2016-12-14 15:23:31 +08:00
wgjak47
2016-12-14 15:29:42 +08:00
debug_backtrace 也用过,但是只敢在 debug 上的时候用...日志一多会非常卡....
chenset
2016-12-14 15:31:41 +08:00
debug_backtrace(options,limit); 后面的参数呢 ? 试过吗?
wgjak47
2016-12-14 15:33:27 +08:00
php5.3 木有 limit(哭
gouchaoer
2016-12-15 13:37:41 +08:00
get_called_*
abc123ccc
2016-12-29 15:32:47 +08:00
楼主,重构完成后,开源出来,我也用一下。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/327615

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX