Parent::parent

abdoulax Messages postés 875 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 22 juin 2012 - 21 nov. 2011 à 13:31
cac188 Messages postés 23 Date d'inscription mardi 25 décembre 2007 Statut Membre Dernière intervention 13 juin 2012 - 4 déc. 2011 à 22:01
Salut,

Je chercher à accéder à la function parent, parent d'une classe sans appeler la function parent. :s Un exemple va vous permettre de comprendre un peu mieu :p

class maclass
{
  public function test() { return 'level 1'; }
}
class maclass2 extend maclass
{
  public function test() { return parent::test() . '-level 2'; }
}
class maclass3 extend maclass2
{
  public function test() { return parent::test() . '-level 3'; }
}
$exemple = new maclass();
echo $exemple->test(); // cela devrai afficher level 1-level 2-level 3 (enfin j'ai pas tester :p)


Ce je voudrai c'est afficher level 1-level 3 avec quelque chose du genre "parent::parent::test()":

class maclass3 extend maclass2
{
  public function test() { return parent::parent::test() . '-level 3'; }
}


J'espère que vous comprenez mon problème et que peut être vous avez une solution?

Have Fun ...

6 réponses

abdoulax Messages postés 875 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 22 juin 2012
21 nov. 2011 à 13:43
Oooops, petite correction

$exemple = new maclass3();
echo $exemple->test(); // cela devrai afficher level 1-level 2-level 3 (enfin j'ai pas tester :p)
0
cs_47 Messages postés 197 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 20 février 2013 1
21 nov. 2011 à 14:05
Bonjour,

et faire depuis la méthode test de ta classe maClass3 (testé sur php5.2):
<?php
return maClass::test() . '-level 3';


devrait te retourner level 1-level 3;

ou sinon, une moins jolie ^^

<?php
class myClass3 extends myClass2
{
    public function test()
    {
        return call_user_func(
            array(get_parent_class(get_parent_class($this)), 'test')
        ) . '-level3';
    }
}


devrait retourné level 1-level 3 aussi

bonne après midi
0
abdoulax Messages postés 875 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 22 juin 2012
21 nov. 2011 à 14:38
Hmm en effet "return maClass::test() . '-level 3';" cela marche très bien :-) Je ne savait que c'était possible sans utiliser de methode static.

Merci pour l'info
0
syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 19
22 nov. 2011 à 10:25
Je ne savais pas que c'était possible sans utiliser de methode static

Je viens d'apprendre qqc aujourd'hui.. Merci 47 !!
S.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cac188 Messages postés 23 Date d'inscription mardi 25 décembre 2007 Statut Membre Dernière intervention 13 juin 2012
4 déc. 2011 à 21:56
Salut les mec je suis intéresser par un de vos process.

Pour faire un MaClass::MaFonction();

Vous introduisez comment votre fichier de fonction (include/require) et comment le fichier doit être construit...

J'ai ouvert un topic pour ca mais pas de reponse...

Merci

Jordan
0
cac188 Messages postés 23 Date d'inscription mardi 25 décembre 2007 Statut Membre Dernière intervention 13 juin 2012
4 déc. 2011 à 22:01
sinon tu as juste a faire comme les override de prestashop tu fait des parent a tous les niveaux en gardant les même nom de classe s ;)
0