y a-t-il un moyen de savoir d'où vient une fonction en PHP? exemple:
function epic()
{
fail();
}
function fail()
{
//at this point, how do i know, that epic() has called this function?
}
php
function-calls
pol_b
la source
la source
debug_backtrace()
quelle superbe fonction. J'utiliserai celui-ci!Utilisez
debug_backtrace()
:la source
debug_backtrace()
c'est un appel coûteux. Ne prenez pas l'habitude de l'utiliser pour déterminer les chaînes d'appels. Si vous souhaitez "protéger" ces fonctions, consultez la POO et les méthodes protégées.La solution la plus rapide et la plus simple que j'ai trouvée
Je teste la vitesse sur un ordinateur portable Lenovo: processeur Intel Pentiom N3530 2,16 GHz, RAM 8 Go
Résultats:
la source
Donc, si vous ne savez toujours VRAIMENT pas comment, voici la solution:
la source
Utilisez la fonction debug_backtrace: http://php.net/manual/en/function.debug-backtrace.php
la source
Essayez ci-dessous le code.
la source
Si vous souhaitez tracer l'origine exacte de l'appel en haut de la pile, vous pouvez utiliser le code suivant:
Cela ignorera les fonctions enchaînées et n'obtiendra que les informations d'appel les plus pertinentes (pertinentes est utilisée vaguement car cela dépend de ce que vous essayez d'accomplir).
la source
J'espère que ça aide quelqu'un. Si la fonction réelle est en dehors de httpdocs, elle ne peut pas être trouvée car le serveur sera configuré pour ne pas l'autoriser. Il n'a été testé que dans un seul dossier, mais la méthodologie récursive devrait fonctionner en théorie.
C'est comme la version 0.1 mais je n'ai pas l'intention de continuer le développement, donc si quelqu'un le met à jour, n'hésitez pas à le republier.
la source
function ff() { grep "function $1" $(find ./ -name "*.php") }
puis appelezff fail
ouff epic
. voir: github.com/MaerF0x0/VimSetup/blob/master/bashrc#L122