Apenas por curiosidade, quando é necessário? É possível criar funções que você não conhece o nome?
precisa
37
Um uso possível seria registrar sua execução. Se você está escrevendo "Ocorreu um erro em". FUNÇÃO a um arquivo de log ou algo assim. Dessa forma, se o nome da função for alterado, você não precisará se preocupar com a pessoa que se lembra de alterar a mensagem de log.
27430 Brian Ramsay
1
Precisava disso para registrar! obrigado por perguntar :)
SublymeRick 31/07
2
Também é útil se você quiser usar o nome da função dentro da função (para outro uso). Gostaria de construir links com base na função, etc. (por exemplo: function name1()use name1 novamente dentro), economizaria muito tempo se você tivesse o mesmo modelo para muitas funções.
Mafia
1
@DisgruntledGoat: é útil se você criar funções manualmente e não desejar editar mensagens de erro para todas as funções. Adicioná-lo à mensagem de erro significa que você tem menos trabalho.
FUNCTION também funciona para funções que não são de classe. Tentei no PHP 7.0.8.
precisa saber é o seguinte
Da mesma maneira, como obter o nome da classe?
22418 Kiran Reddy
2
@KiranReddy Há uma constante mágica para isso também: __CLASS__. Ou você pode fazer get_class($this).
Sean the Bean
1
Tentei em PHP> = 4
Nabi KAZ
98
Você pode usar as constantes mágicas__METHOD__ (inclui o nome da classe) ou __FUNCTION__(apenas o nome da função), dependendo se é um método ou uma função ... =)
É um recurso incrível que consome muitos recursos. Usar FUNCTION ou METHOD é muito mais eficiente. debug_backtrace () é ótimo se você precisar de mais do que apenas o nome da função.
Luke Cousins
2
É uma má prática para uso debug_backtrace () para esta finalidade
Marcio Mazzucato
1
ESTA É A ÚNICA MANEIRA CORRETA que encontrei !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!! !!!!!!!!!!!!!! Porque__FUNCTION__ nome retornos pai função (quando a função actual está incluído em função pai)
Embora esse snippet de código possa ser a solução, incluir uma explicação realmente ajuda a melhorar a qualidade da sua postagem. Lembre-se de que você está respondendo à pergunta dos leitores no futuro e essas pessoas podem não saber os motivos da sua sugestão de código.
function name1()
use name1 novamente dentro), economizaria muito tempo se você tivesse o mesmo modelo para muitas funções.Respostas:
A maneira exata é usar a
__FUNCTION__
constante mágica predefinida .Exemplo:
Resultado:
MethodA
.fonte
__CLASS__
. Ou você pode fazerget_class($this)
.Você pode usar as constantes mágicas
__METHOD__
(inclui o nome da classe) ou__FUNCTION__
(apenas o nome da função), dependendo se é um método ou uma função ... =)fonte
Se você estiver usando o PHP 5, pode tentar o seguinte:
fonte
__FUNCTION__
nome retornos pai função (quando a função actual está incluído em função pai)Resultado: "Método A";
fonte