PHP函数可以动态地知道它的名字吗?

时间:2012-03-04 14:59:32

标签: php

我正在尝试获取已在操作上下文中运行的函数列表。这就是需求的来源。

有没有办法让这样的工作?

function funcX()
{
    echo this.nameOrSomethingHere; //outputs funcX
} 

this example所示,可以在Javascript中实现此功能。

我总是可以选择另一种解决方案,以满足我的原始需求,如下所示:

function funcX()
{
    $this_function_name = "funcX";
    Add_this_to_the_already_executed_functions_list($this_function_name);     
} 

在这里,Add_this_to_the_already_executed_functions_list函数的工作是获取传递的字符串并将其添加到全局定义的数组中,这样在关闭过程结束时,您可以获得在最后一页中运行的所有函数的视图。

上述方法可行,但显然,它并不优雅,因为它不是动态的。

能够做这样的事情本来很好

function funcX()
{
     Add_this_to_the_already_executed_functions_list(this.????);     
} 

问题是,是否有办法在PHP中执行此操作?

3 个答案:

答案 0 :(得分:10)

您可以使用__FUNCTION__获取当前函数的名称。

答案 1 :(得分:0)

http://us2.php.net/manual/en/function.debug-backtrace.php

debug_backtrace会告诉你这些以及更多内容。最适合调试,但你可以将它用于任何你想要的。

答案 2 :(得分:0)

使用__FUNCTION__

请参阅'magic constants'