IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Connaître le nom du fichier exécutant une classe


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2011
    Messages : 7
    Points : 4
    Points
    4
    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 !

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    récupère le errfile

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2011
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    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.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    tu peut faire ça mais uniquement avec xdebug

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2011
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    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 !

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    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

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2011
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    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 ?

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    tout est dans le lien que j'ai mis

  9. #9
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 887
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 887
    Points : 16 320
    Points
    16 320
    Par défaut
    Sinon tu peux peut-être regarder du côté de get_included_files() et debug_backtrace().

  10. #10
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    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 : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    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.

Discussions similaires

  1. Connaître le nom de l'exécutable à partir d'une dll
    Par QuickSave dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/09/2008, 15h00
  2. stocker les nom de fichiers dans une base
    Par Corben dans le forum Windows
    Réponses: 2
    Dernier message: 04/01/2006, 15h50
  3. Réponses: 8
    Dernier message: 02/11/2005, 20h21
  4. Upload et enregistrement du nom du fichier dans une bdd
    Par johan_barbier dans le forum XMLRAD
    Réponses: 8
    Dernier message: 26/09/2005, 12h02
  5. [D2005][CGI] Nom de fichier pour une image
    Par Argonaute dans le forum Web & réseau
    Réponses: 1
    Dernier message: 30/08/2005, 12h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo