Bonjour,
J'ai un problème de débutant en POO.
J'ai 2 classes : musicien et guitariste. La classe guitariste hérite des attributs et méthodes de musicien class guitariste extends musicien { }.
J'ai ce message d'erreur :(fichier guitariste.class.php)Fatal error: Access to undeclared static property: musicien::$metier
Extraits du code :
musicien.class.php
guitariste.class.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 class musicien { public $metier = "Musicien"; }
main.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class guitariste { public $metier = "Guitariste"; public function afficheMetier() { $metierprincipal = parent::$metier; $metierspecifique = $this->metier; $metiers = 'est ' . $metierprincipal . '(' . $metierspecifique . ')'; echo $metiers; } }
J'ai besoin de garder le métier de base (musicien) et de préciser le métier spécifique si besoin (exemple "guitariste", "bassiste" via des classes dédiées).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 require_once('musicien.class.php'); require_once('guitariste.class.php'); $guitariste1 = new guitariste(); $guitariste1->afficheMetier();
Si je déclare static $metier dans la classe mère (musicien) et que j'utilise un attribut nommé différemment pour les classes filles (public $metierspecifique par exemple), ça marche.
Dois-je obligatoirement procéder ainsi ? N'y a t-il aucun moyen de conserver les mêmes attributs (classe abstraite ?).
Merci.
Partager