PHP:获取调用函数的名称?

时间:2014-10-27 06:22:18

标签: php

有没有办法在PHP中获取调用函数的名称?

在下面的代码中,我使用调用函数的名称作为事件名称的一部分。我想修改getEventName()函数,以便它可以自动确定调用方法的名称。有没有这样做的PHP函数?

class foo() {

    public function bar() {
        $eventName = $this->getEventName(__FUNCTION__);
        // ... do something with the event name here 
    }     

    public function baz() {
        $eventName = $this->getEventName(__FUNCTION__);
        // ... do something with the event name here 
    }

    protected function getEventName($functionName) {
        return get_class($this) . '.' . $functionName;
    }
}

2 个答案:

答案 0 :(得分:1)

查看debug_backtrace()的输出。

答案 1 :(得分:0)

如果你想知道调用你当前所用函数的函数,你可以定义类似的东西:

<?php
/**
* Returns the calling function through a backtrace
*/
 function get_calling_function() {
  // a function x has called a function y which called this
  // see stackoverflow.com/questions/190421
  $caller = debug_backtrace();
  $caller = $caller[2];
 $r = $caller['function'] . '()';
 if (isset($caller['class'])) {
$r .= ' in ' . $caller['class'];
}
if (isset($caller['object'])) {
$r .= ' (' . get_class($caller['object']) . ')';
 }
 return $r;
}
?>