Connaitre le nom d'une classe enfant (sans l'instancier) - PHP - Programmation
Marsh Posté le 22-10-2008 à 11:03:54
ça me semble logique que si tu instancie un objet de classe common, il se comporte comme un objet de classe common, et pas comme un d'une de ses classes filles
ceci dit, je ne comprends pas comment tu appelle Membre:Exists() dans un objet de type common ?
Marsh Posté le 22-10-2008 à 11:06:42
flo850 a écrit : ça me semble logique que si tu instancie un objet de classe common, il se comporte comme un objet de classe common, et pas comme un d'une de ses classes filles |
Je n'instancie rien justement!
- Membre hérite de Common.
- La fonction "Exists" est dans la classe Common, mais est appeler depusi la classe Membre : Membre::Exists();
Q. Comment connaitre ce qui est en gras souligné a l'interieur de la fonction Exists() sans devoir instancier un objet Membre en dehors ?
Voila simplement ma question
Marsh Posté le 22-10-2008 à 11:09:11
ReplyMarsh Posté le 22-10-2008 à 11:11:46
Ca n'est possible qu'à partir de PHP 5.3, avec l'implémentation du late static binding.
Si tu n'as pas la 5.3, il n'y a strictement aucun moyen, dans une méthode statique, de récupérer le nom de la classe enfant Ca a niqué bon nombre d'implémentations d'ActiveRecord.
Marsh Posté le 22-10-2008 à 11:13:54
Le seul moyen serait d'avoir des méthodes Exists dans tes classes filles, qui appellerait explicitement une autre méthode dans Common, genre :
Code :
|
et
Code :
|
Marsh Posté le 22-10-2008 à 11:14:01
flo850 a écrit : je dois etre fatigué , mais Exist est une fonction statique ? |
Non.
Code :
|
Code :
|
Et si je fais :
Code :
|
Aucun moyen de savoir avec quel classe je l'ai appelée, voila tout mon probleme.
Maitenant si ya pas de solution, dite le et je trouverai autre chose
En fait $cur_table prendra la valeur "common" et devrait dans mon cas contenir "membre"
Merci pour tes reponses
Marsh Posté le 22-10-2008 à 11:14:37
Comme dit, pas de solution, faut bricoler comme dans mon 2ème post
Marsh Posté le 22-10-2008 à 11:00:53
Bonjour,
j'ai une classe "Common"
et plusieurs classes enfant héritant de la classe Common.
On va prendre l'exemple de la classe "Membre" qui hérite donc de la classe common.
J'ai créé une fonction
qui est sencé tester dans la BDD si un ID existe ou pas en fonction de la table de la classe courante.
Mais bon la n'est pas le probleme.
J'ai besoin de récupérer le nom de la classe qui appelle la fonction Common::Exists().
Le truc c'est que si je fais ceci :
et que dans ma fonction Exists je fais un /
Il affiche "Common", hors je voudrais pouvoir connaitre quel classe a appeler cette fonction!
Si j'instancie un objet ca marche mais justemetn j'ai besoin de pouvoir utiliser cette fonction sans instancier un objet...
Y a-t-il une astuce que j'aurais zappé ? J'ai lu et relu la doc de PHP je ne trouve rien a ce sujet...
Maintenant si y a pas de solution... tant pis
D'avance merci!
Gat$
Message édité par Gat$ le 22-10-2008 à 11:04:20