POO php5 classe abstraite et méthode static

cs_dorian91 Messages postés 41 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 15 mars 2009 - 29 sept. 2008 à 15:22
xmanoux Messages postés 1 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 7 octobre 2008 - 7 oct. 2008 à 16:48
Bonjour à tous,
J'ai une petite question pour vous. Je vais vous écrire le code et vous expliquer mon problème

class Test1 extends Test2
{
}

abstract class Test2
{
   public static function test()
   {

   }
}

Mon problème est que j'arrive a appelé la méthode static de Test2 via Test1 avec Test1::test() si je fais un print 'salut'; ça marche.
Ma question est : est ce qu'on peut savoir qu'elle classe a appelé la méthode static test() (dans mon exemple Test1)
Lol je sais pas si j'ai été très clair  
Merci d'avance
A+

3 réponses

huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
29 sept. 2008 à 22:28
Salut
Quand tu as plusieurs classes qui héritent d'une même classe parente, tu peux savoir (dans les méthode de la classe parente) quelle classe a appelé la méthode en faisant :
get_class($this)
0
cs_dorian91 Messages postés 41 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 15 mars 2009
30 sept. 2008 à 09:32
Salut huberdine
J'ai essayé cette solution mais cela ne fonctionne pas il m'indique le nom de la classe abstraite
0
xmanoux Messages postés 1 Date d'inscription mardi 7 octobre 2008 Statut Membre Dernière intervention 7 octobre 2008
7 oct. 2008 à 16:48
Salut dorian,
C'est normal que ça ne marche pas : quand tu accedes à $this, tu es "dans" la classe virtuelle, il te renvoie donc le nom de la classe virtuelle.
Mais ce que tu essayes de faire va "à l'encontre" de la logique de la programmation objet.
tu veux que "function test()" dans test2,  aie un comportement différent lorsqu'elle est appellée par test1 sa mère ? Il faut donc que tu la redéfinisses dans test1: cela s'appelle la spécialisation de methodes dans l'héritage de classes.
0
Rejoignez-nous