[Résolu] Savoir qui appelle une méthode - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [Résolu] Savoir qui appelle une méthode (/showthread.php?tid=4115) Pages :
1
2
|
[Résolu] Savoir qui appelle une méthode - My Hotel - 20-06-2009 Bonjour à tous, Dans le cadre du développement de mon jeu, j'ai une méthode d'une classe, et je cherche à savoir quelle méthode de quelle classe appelle celle-ci, lorsque elle est appelée. Par exemple, il faudrait que cette fameuse méthode puisse savoir si c'est Méthode1 de Class2 ou MéthodeX, de la classe X, qui l'a appelée. Je ne veux pas rajouter d'arguments à ma méthode du genre function machin(..., ..., ..., $appelant) J'ai cherché sur google mais je n'ai trouvé aucune méthode propre Je pense que c'est tout simple, mais impossible d'y arriver, donc je compte sur vous! Merci d'avance RE: Savoir qui appelle une méthode - DragonMaster - 20-06-2009 À ma connaissance je crois pas que sa soit possible comme sa...mais sa m'intéresse vraiment donc je vais attendre une réponse avec toi RE: Savoir qui appelle une méthode - kraddle - 20-06-2009 salutations peut-être du côté de Réflexion : Citation :PHP 5 introduit API de réflexion complète qui permet de faire du reverse-engineering sur les classes, les interfaces, les fonctions et les méthodes tout comme les extensions. L'API de réflexion permet également d'obtenir les commentaires de la documentation pour les fonctions, les classes et les méthodes. RE: Savoir qui appelle une méthode - My Hotel - 20-06-2009 Merci de ton lien, ça me fait de la lecture... Je saisis pas trop, pourtant ça doit crever les yeux, comment je fais grâce à Refléxion pour savoir "qui" a appelé ma méthode? Parce pour moi ça sert juste à avoir des infos sur des fonctions, des classes... Même si ça ne sert qu'à ça, c'est quand même utile Donc, pourrais tu m'expliquer comment s'en servir pour résoudre mon problème? RE: Savoir qui appelle une méthode - tog84 - 20-06-2009 Je viens de faire pour moi. J'utilise les Constantes magiques. J'ai créé une classe log pour enregistrer dans un un fichier XML toutes mes requêtes à la BDD et aussi mes messages de debug. voilà comme j'appelle la méthode.
$query représente ma requète mysql array(__METHOD__, __LINE__) représentent la méthode de la classe où j'ai fais appel à ma classe log et à la ligne où elle se trouve. Voici le résultat du fichier XML
J'espère que cela t'aidra. Cordialement RE: Savoir qui appelle une méthode - My Hotel - 20-06-2009 Oui, j'avais pensé à cette solution mais le must serait de savoir qui appelle ma méthode au sein de celle-ci, sans arguments en plus. Sinon, je vais appliquer cette solution, merci RE: Savoir qui appelle une méthode - My Hotel - 20-06-2009 J' ai une méthode qui log différentes erreurs, Sql ou autres. J'ai besoin de connaitre au sein de cette méthode quelle autre méthode a géneré l'erreue, sans modifier mon code compte tenu des dizaines de méthodes qui peuvent appeler celle de gesrion des erreurs. C' est surtout pour eviter de modifier toit mon code, et parce que je trouvais ça propre. RE: Savoir qui appelle une méthode - wild-D - 21-06-2009 debug_backtrace() ^^ (fourni la pile complète) RE: Savoir qui appelle une méthode - My Hotel - 21-06-2009 @Oxman, je suis pas sûr de bien comprendendre, mais il me semble que c'est attendu, genre : impossible de se connecter à la BDD, ou problème de lecture du cache... @Wild-D, je vais regarder du côté de cette fonction, merci RE: Savoir qui appelle une méthode - naholyr - 21-06-2009 Utiliser debug_backtrace() pour de l'opérationnel est la pire idée possible, question performance c'est terrible, et en place cette fonction comme son nom l'indique est à usage de débuggage, on ne peut donc certainement pas s'appuyer dessus pour de la prod... Ceci étant dit, vu que ta fonction a pour rôle de logger des erreurs, elle est plutôt hors du flux normal, et plutôt destinée à du débuggage justement. Donc dans ce cas cela semble justifié |