Retrouver le fichier d'appel d'une fonction.

Mammouth du PHP | 1511 Messages

13 janv. 2008, 20:35

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 ;)

Mammouth du PHP | 505 Messages

13 janv. 2008, 20:47

C'est forcement dans la pile que tu trouveras ta solutions, probablement via une fonction telle que debug_backtrace()

Mammouth du PHP | 1511 Messages

13 janv. 2008, 20:50

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 ;)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

13 janv. 2008, 21:32

Regarde du côté de la constante __FILE__
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 1511 Messages

13 janv. 2008, 21:50

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 ;)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

13 janv. 2008, 21:52

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.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

13 janv. 2008, 22:42

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.

Mammouth du PHP | 1885 Messages

14 janv. 2008, 01:48

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)
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

14 janv. 2008, 09:26

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é :?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 1511 Messages

14 janv. 2008, 22:05

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() ;)