在PHP中获取名称功能

时间:2014-01-13 16:43:17

标签: php

我有一些课程:

class A
{
   private $_method;
   public function __construct()
   {
       $this->_method = new B();
   }
   public function demo()
   {
     $this->_method->getNameFnc();
   }
}

class B
{
   public function getNameFnc()
   {
     echo __METHOD__;
   }
}

我正在尝试获取class B类的函数名称,但我希望函数getNameFnc返回'demo'。如何在getNameFnc的函数class B中获取名称“demo”?

3 个答案:

答案 0 :(得分:1)

好吧,如果你真的想在不传递参数*的情况下这样做,你可以使用debug_backtrace()

→ Ideone.com

public function getNameFnc()
{
  $backtrace = debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT, 2);
  echo $backtrace[1]['function'];
}

*这将是推荐的方式,尽管人们永远不需要知道之前调用过哪个函数。如果你的应用程序依赖于这个事实,你就会遇到一个重大的设计缺陷。

答案 1 :(得分:1)

您需要使用debug_backtrace来获取该信息。

我没有测试下面的代码,但我认为这应该会为您提供所需的信息:

$callers = debug_backtrace();
echo $callers[1]['function'];

答案 2 :(得分:0)

为什么不通过它?

class A
{
   private $_method;
   public function __construct()
   {
       $this->_method = new B();
   }
   public function demo()
   {
     $this->_method->getNameFnc(__METHOD__);
   }
}

class B
{
   public function getNameFnc($method)
   {
     echo $method;
   }
}

如果您不想要班级名称,请使用__FUNCTION__

相关问题