Page 1 sur 1

Retrouver le fichier d'appel d'une fonction.

Posté : 13 janv. 2008, 20:35
par momox
Bonsoir la cie,
je cherche dans la doc une fonction qui permettrait de retrouver depuis ou à été appelée une fonction, une méthode ou une classe mais je n'arrive pas à trouver...
Quelqu'un saurait t'il si une fonction de ce genre existe, ce qui m'éviterais d'avoir a farfouiller le callstack...
Merci d'avance ;)

Posté : 13 janv. 2008, 20:47
par titerm
C'est forcement dans la pile que tu trouveras ta solutions, probablement via une fonction telle que debug_backtrace()

Posté : 13 janv. 2008, 20:50
par momox
C'est forcement dans la pile que tu trouveras ta solutions, probablement via une fonction telle que debug_backtrace()
Justement, j'avais regardé la dedans, c'est un peu déroutant au début, mais je vais m'y faire ;)

Posté : 13 janv. 2008, 21:32
par zeus
Regarde du côté de la constante __FILE__

Posté : 13 janv. 2008, 21:50
par momox
La constante __FILE__ retourne uniquement le fichier courant, ce qui veut dire que si j'ai une fonction toto dans le fichier tata.php qui est inclu dans titi.php, le __FILE__ dans la fonction toto me retournera tata.php, que je l'appelle depuis tata.php ou titi.php
Voila ;)

Posté : 13 janv. 2008, 21:52
par zeus
Le chemin complet et le nom du fichier courant. Si utilisé dans un include, le nom du fichier inclus est retourné
La doc te donne tord ;)

De plus, j'utilise cette constante régulièrement pour du debugage.

Posté : 13 janv. 2008, 22:42
par Hubert Roksor
En fait vous êtes en train de dire la même chose, que la constante __FILE__ renvoit le fichier dans lequel elle est utilisée. D'ailleurs, c'est entre autres à causes de ce genre de problème de communication que je déteste passionément l'usage de "toto", "tata" et les autres.

Pour le reste, comme tu as dû t'en apercevoir, il n'y a pas d'autre façon qu'utiliser la pile, et uniquement à des fins de débogage. Si ta fonction a besoin de connaitre l'appelant pour fonctionner, c'est qu'il y a un problème de conception quelque part.

Posté : 14 janv. 2008, 01:48
par Xenon_54
Le chemin complet et le nom du fichier courant. Si utilisé dans un include, le nom du fichier inclus est retourné
La doc te donne tord ;)

De plus, j'utilise cette constante régulièrement pour du debugage.
N'est-ce pas cela que momox a dit?

Si __FILE__ est affiché à partir de include.php qui est lui-même inclus dans index.php, include.php s'affichera. Non? (je viens de faire le test)

Posté : 14 janv. 2008, 09:26
par zeus
Effectivement, comme le dit Hubert, je dit exactement la même chose que momox. En lisant rapidement, je pensais qu'il disait le contraire.

Toujours est-il que je pensais que c'était ce qui était demandé :?

Posté : 14 janv. 2008, 22:05
par momox
Ce que je voulais savoir, ce n'étais pas le fichier de déclaration de la fonction en elle même, mais le fichier depuis laquelle on l'appelle ;)
Je vais donc me tourner de ce pas vers debug_backtrace() ;)