Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/09/2011, 18h17   #1
Invité de passage
 
Inscription : septembre 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 7
Points : 1
Points : 1
Par défaut Connaître le nom du fichier exécutant une classe

Bonjour,

J'ai une classe de gestion pour la base de données et dans celle-ci, j'exécute, entre autre, la fonction mysql_fetch_assoc. J'ai également créer une fonction permettant qui s'occupe de gérer les erreurs PHP (avec set_error_handler) et de loguer les erreurs.

Mon problème est le suivant : parfois, dans mon fichier de log, il m'est indiqué "mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource" comme erreur, mais avec le fichier de gestion de la base de données comme fichier ayant provoqué l'erreur.

Cependant, j'aimerais pouvoir avoir l'indication du fichier ayant exécuté la classe de gestion de la base de données. En effet, sans cette indication je ne peux savoir quel partie du site provoque cette erreur ...

Quelqu'un saurait-il quelle fonction je pourrais utiliser pour récupérer le nom du fichier ayant exécuté la classe de gestion de la base de données ?

Merci d'avance !
chaosinf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 18h25   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
récupère le errfile
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 18h44   #3
Invité de passage
 
Inscription : septembre 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 7
Points : 1
Points : 1
C'est ce que je fais, à travers ma fonction personnalisée des erreurs je récupère le troisième paramètre, qui est le fichier de l'erreur. Mais c'est bien ici mon problème, c'est qu'il renvoie toujours le nom du fichier gérant la base de données, alors que j'aimerais le script qui a lancé la classe de gestion de la base.
chaosinf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 18h48   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
tu peut faire ça mais uniquement avec xdebug
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 20h22   #5
Invité de passage
 
Inscription : septembre 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 7
Points : 1
Points : 1
Je ne crois pas avoir xDebug sur mon serveur mutualisé.

Si, comme tu le dis, il n'y a aucun moyen de récupérer le nom du fichier qui a exécuté la classe, est-il possible d'envoyer plus de paramètre lors d'une erreur ?

Imaginons que dans la classe, j'ai défini une variable contenant le nom de la page qui l'a appelée (qui est donc remplie manuellement). Serais-ce possible d'envoyer cette variable en même temps que l'erreur ?

Merci d'avance !
chaosinf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 20h30   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
y'aurai un moyen de faire ça enfaite c'est de transformer tout les erreur en exception et la tu auras accès au stack

http://www.php.net/manual/en/class.e...ion.php#103754
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2011, 21h32   #7
Invité de passage
 
Inscription : septembre 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 7
Points : 1
Points : 1
Désolé, mais pourrais-tu préciser ce que tu entends par l'utilisation des exceptions ?

Car dans mon cas, ma classe de gestion de la base de données contient une variable indiquant la page depuis laquelle elle a été appelée (remplie manuellement), ne dois-je pas plutôt créer une classe spéciale d'exception pour recevoir le nom du fichier, car dans l'exception par défaut on ne peut pas le modifier, non ?

Transformer les erreurs PHP en exceptions ne me permet pas de changer le nom du fichier provoquant l'erreur avec l'exemple indiqué dans le lien ?
chaosinf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 01h03   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
tout est dans le lien que j'ai mis
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 09h43   #9
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 050
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 050
Points : 12 181
Points : 12 181
Sinon tu peux peut-être regarder du côté de get_included_files() et debug_backtrace().
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 13h27   #10
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
Debug::printStack();

une autre solution est d'avoir un dispositif qui te donne le nom du fichier "utilisateur" de la fonction.. building dans la classe de gestion de la base de la base de donnée.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h22.


 
 
 
 
Partenaires

Hébergement Web