如何在班级中获取调用者函数名称?

时间:2012-10-24 20:01:58

标签: php

  

可能重复:
  How to get name of calling function/method in PHP?

所以在PHP中我正在尝试构建一个自定义错误处理程序类。这很简单: 我给它一个代码编号,它会返回一个格式化的错误消息,我可以用它发送到移动设备。

现在看起来像这样:

class Errorhandler {
   private $errors = array(
       //here be error codes and messages
       100 => 'Missing input or parameter!'
  );

   public function __construct($code = 100){
        //return formatted output
   }
}

所以我会使用上面的类,如:

public function someFunction(){
    //some conditions met, then throw an error
    $handler = new ErrorHandler();
    $this->response = $handler;        
}

所以我在Errorhandler类中需要父函数的名称(someFunction),所以我可以使用格式化的错误消息返回它。 在旁注:我不想使用参数,在那里写太多。

3 个答案:

答案 0 :(得分:2)

__FUNCTION__

这很神奇。点击此处:http://www.php.net/manual/en/language.constants.predefined.php

至于在你的ErrorHandler类中实际获取它,你必须将它传递给构造函数。 PHP不是 魔法。

答案 1 :(得分:0)

您可以使用debug_backtrace()来获取已调用函数的函数。

debug_backtrace()返回当前的调用堆栈。

答案 2 :(得分:0)

您可以解析debug_backtrace()函数输出。它返回所有调用的关联数组到最顶层(http://php.net/manual/en/function.debug-backtrace.php)

另请注意,致命错误会中断正常的脚本执行并捕获它,您需要从register_shutdown_function()注册的回调中调用错误处理程序(http://php.net/manual/ru/function.register-shutdown -function.php)