如何在PHP的函数中获取函数名称?


235

可能吗?

function test()
{
  echo "function name is test";
}

1
出于好奇,什么时候需要这个?是否可以创建您不知道其名称的函数?
DisgruntledGoat

37
一种可能的用途是记录您的执行情况。如果您正在写“我在时出错”。功能到日志文件或其他东西。这样,如果函数名称被更改,您不必担心记住更改日志消息的人。
Brian Ramsay

1
需要此日志!感谢您提出问题:)
SublymeRick

2
如果要在函数内部使用函数名称(用于其他用途),也很有用。像基于函数等构造链接(例如:function name1()然后在内部再次使用name1),如果您具有用于许多函数的相同模板,则会节省大量时间。
黑手党

1
@DisgruntledGoat:如果您手动创建函数并且不想编辑每个函数的错误消息,则很有用。将其添加到错误消息中意味着您的工作量减少了。
约翰·波

Answers:




16

如果您使用的是PHP 5,则可以尝试以下操作:

function a() {
    $trace = debug_backtrace();
    echo $trace[0]["function"];
}

14
这是难以置信的资源密集型。使用FUNCTIONMETHOD效率更高。如果您不仅需要函数名称,还可以使用debug_backtrace()。
路加·考辛斯

2
为此目的使用debug_backtrace()是一种不好的做法
Marcio Mazzucato 2014年

1
这是我找到的唯一正确的方法!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!! 因为__FUNCTION__返回父函数名称(当当前函数包含在父函数中时)
T.Todua 2015年

5
@tazo todua。能给我举个例子吗?
2002年

2
<?php

  class Test {
     function MethodA(){
         echo __FUNCTION__ ;
     }
 }
 $test = new Test;
 echo $test->MethodA();
?>

结果:“ MethodA”;


尽管此代码段可能是解决方案,但提供说明确实有助于提高您的帖子质量。请记住,您将来会为读者回答这个问题,而这些人可能不知道您提出代码建议的原因。
SilverNak
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.