OVH Cloud OVH Cloud

idee de genie...

3 réponses
Avatar
Etienne SOBOLE
salut.

j'ai un script qui appelle une fonction dans un autre script.
dans cette fonction je fais des controles (sur les arguments passé entre
autre), et eventuellement en cas de problem je déclanche un trigger_error

Mais voila, le bleme, j'ai plus (+) besoin de connaitre le fichier appellant
la fonction que l'endroit d'ou je déclanche le trigger_error...
Donc y a t-il un moyen de connaitre le fichier et la ligne du fichier qui a
réalisé l'appel de la fonction?

merci
Etienne

3 réponses

Avatar
ED
Etienne SOBOLE wrote:

Mais voila, le bleme, j'ai plus (+) besoin de connaitre le fichier appellant
la fonction que l'endroit d'ou je déclanche le trigger_error...
Donc y a t-il un moyen de connaitre le fichier et la ligne du fichier qui a
réalisé l'appel de la fonction?


Si tu as un PHP >= 4.3.0 tu as le superbe debug_backtrace() qui te donne
l'état de la pile d'appel de fonction (n° de ligne et fichier où à eu
lieu l'appel, valeur des paramètres, nom de la focntion et de la classe,
etc.).

Personnellement j'utilise ça dans une bonne partie de mes gestions
d'erreurs. Par exemple dans le gestionnaire d'erreur qui capte les
problèmes de requête base de données je n'ai pas besoin de la position
de l'appel (la classe d'abstraction) mais plus de celui qui a généré cet
appel (la méthode qui a appelé la classe d'abstraction). Je lis le
backtrace et je le rajoute au message d'erreur.
Si tu as une application stable qui ne fait pas ou peu d'intervention
dans les logs tu peux aussi faire un gestionnaire d'erreur qui fait un
fichier à chaque erreur dans un répertoire /log. Si tu y met le résultat
de debug_backtrace (sérialisé) tu pourras très facilement comprendre ce
qu'il s'est passé pour le déboggage.

http://www.php.net/debug_backtrace


--
Eric Daspet
*
Vous cherchez une doc sur PHP 5 ? *PHP 5 avancé*, aux éditions Eyrolles
http://www.eyrolles.com/Informatique/Livre/9782212113235/-PHP-5-avance

Avatar
Paul Delannoy
Etienne SOBOLE a écrit:
salut.

j'ai un script qui appelle une fonction dans un autre script.
dans cette fonction je fais des controles (sur les arguments passé entre
autre), et eventuellement en cas de problem je déclanche un trigger_error

Mais voila, le bleme, j'ai plus (+) besoin de connaitre le fichier appellant
la fonction que l'endroit d'ou je déclanche le trigger_error...
Donc y a t-il un moyen de connaitre le fichier et la ligne du fichier qui a
réalisé l'appel de la fonction?


Rajoutes un parametre dans l'appel, p ex $script_appelant et affecte lui
pour valeur la donnée $_SERVER['PHP_SELF'] avant l'appel.

merci
Etienne


Avatar
Etienne SOBOLE
"ED" a écrit dans le message de news:
40d452a3$0$296$

Si tu as un PHP >= 4.3.0 tu as le superbe debug_backtrace() qui te donne
l'état de la pile d'appel de fonction (n° de ligne et fichier où à eu
lieu l'appel, valeur des paramètres, nom de la focntion et de la classe,
etc.).


Arg.
mais c'est complètement ce que je cherchais...
mais comment j'ai fais pour ne pas la voir !!!

purée... j'ai du caca dans les yeux ou quoi ;)
Merci.
c'est trop top !!!

Etienne