Bonjour tout le monde,

J'ai un problème avec ces classes, j'ai isolé le problème mais j'ai pas réussi à le régler en bidouillant et j'ai rien trouvé sur google.

Le code php en simplifié:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
class A {
     protected $attribut1;
     protected $attribut2;
     public function __construct($parametre1, $parametre2 = false) {
          $this->attribut1 = $parametre1;
          $this->attribut2 = $parametre2;
     }
}
 
abstract class B extends A {
     protected $attribut3;
     public function __construct() {
          $this->attribut3 = 'blabla';
     }
}
 
class C extends B {
     protected $attribut4;
     public function __construct($parametre1 = 'truc_par_defaut') {
          $this->attribut1 = 'truc';
          $this->attrbut2 = true;
          $this->attribut4 = $parametre1;
     }
}
Alors le problème c'est que dans $parametre1 de C il y a 'C'. J'ai fini par comprendre qu'il se réfère au $parametre1 de A. Alors problème de conception (du genre j'aurai jamais dû en arriver a faire ça) ou y a t-il une astuce?

J'ai essayé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
class C extends B {
     protected $attribut4;
     public function __construct($hoho, $parametre1 = 'truc_par_defaut') {
          $this->attribut1 = 'truc';
          $this->attribut2 = true;
          $this->attribut4 = $parametre1;
     }
}
mais aussi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
class C extends B {
     protected $attribut4;
     public function __construct($hoho, $parametre1 = 'truc_par_defaut') {
          A::__construct('truc',true);
          $this->attribut4 = $parametre1;
     }
}
mais encore:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
class C extends B {
     protected $attribut4;
     public function __construct($parametre1 = 'truc_par_defaut') {
          A::__construct('truc',true);
          $this->attribut4 = $parametre1;
     }
}
Je sens bien que ca me dépasse. A l'aide !