Par simple curiosité, quand est-ce nécessaire? Est-il possible de créer des fonctions dont vous ne connaissez pas le nom?
DisgruntledGoat
37
Une utilisation possible consisterait à enregistrer votre exécution. Si vous écrivez "J'ai eu une erreur dans". FONCTION vers un fichier journal ou quelque chose. De cette façon, si le nom de la fonction est modifié, vous n'avez pas à vous soucier de la personne qui se souvient de modifier le message du journal.
Brian Ramsay
1
J'avais besoin de ça pour me connecter! merci d'avoir posé la question :)
SublymeRick
2
Également utile si vous souhaitez utiliser le nom de la fonction à l'intérieur de la fonction (pour une autre utilisation). Comme construire des liens basés sur la fonction, etc. (par exemple: function name1()puis utiliser à nouveau name1 à l'intérieur), gagnerait beaucoup de temps si vous avez le même modèle pour de nombreuses fonctions.
Mafia
1
@DisgruntledGoat: il est utile si vous créez des fonctions manuellement et ne souhaitez pas éditer de message d'erreur pour chaque fonction. L'ajouter dans un message d'erreur signifie que vous avez moins de travail.
FUNCTION fonctionne également pour les fonctions non classées. Testé sur PHP 7.0.8.
mvsagar
De la même manière, comment obtenir le nom de la classe?
Kiran Reddy
2
@KiranReddy Il y a une constante magique pour cela aussi: __CLASS__. Ou vous pouvez le faire get_class($this).
Sean the Bean
1
Testé sur PHP> = 4
Nabi KAZ
98
Vous pouvez utiliser les constantes magiques__METHOD__ (inclut le nom de la classe) ou __FUNCTION__(juste le nom de la fonction) selon qu'il s'agit d'une méthode ou d'une fonction ... =)
C'est une ressource incroyable. L'utilisation de FUNCTION ou METHOD est beaucoup plus efficace. debug_backtrace () est idéal si vous avez besoin de plus que le nom de la fonction.
Luke Cousins
2
C'est une mauvaise pratique d'utiliser debug_backtrace () à cet effet
Marcio Mazzucato
1
C'EST LA SEULE FAÇON CORRECTE que j'ai trouvée !!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!! !!!!!!!!!!!!!! car __FUNCTION__renvoie le nom de la fonction parent (lorsque la fonction actuelle est incluse dans la fonction parent)
Bien que cet extrait de code puisse être la solution, y compris une explication aide vraiment à améliorer la qualité de votre message. N'oubliez pas que vous répondrez à la question pour les lecteurs à l'avenir, et ces personnes pourraient ne pas connaître les raisons de votre suggestion de code.
function name1()
puis utiliser à nouveau name1 à l'intérieur), gagnerait beaucoup de temps si vous avez le même modèle pour de nombreuses fonctions.Réponses:
La manière précise consiste à utiliser le
__FUNCTION__
constante magique prédéfinie .Exemple:
Résultat:
MethodA
.la source
__CLASS__
. Ou vous pouvez le faireget_class($this)
.Vous pouvez utiliser les constantes magiques
__METHOD__
(inclut le nom de la classe) ou__FUNCTION__
(juste le nom de la fonction) selon qu'il s'agit d'une méthode ou d'une fonction ... =)la source
Si vous utilisez PHP 5, vous pouvez essayer ceci:
la source
__FUNCTION__
renvoie le nom de la fonction parent (lorsque la fonction actuelle est incluse dans la fonction parent)Résultat: "MethodA";
la source