[POO] constructeurs, paramètres et héritage
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:
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:
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:
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:
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 ! :calim2: