Bonjour,
Ne m'étant lancé que récemment dans les fonctionnalités objet de PHP5, j'y découvre de nombreux atouts mais forcément, je me vois confronté à quelques hics... En voici donc un qui m'importune particulièrement !
Tout d'abord, le code :
Code :
- class Papa {
- protected static $variable_genante = 'Papa';
- public function affiche () {
- echo self::$variable_genante;
- }
- }
- class Fiston extends Papa {
- protected static $variable_genante = 'Fiston';
- }
- $t = new Fiston;
- $t -> affiche();
|
Ce code affiche "Papa" alors que j'aurais beaucoup apprécié qu'il m'affiche poliment "Fiston"... Bien sûr, je me doute que l'erreur est due à l'utilisation du mot clef "self" dans la classe Papa, qui n'est pas réinterprété lors de l'héritage et qui désigne donc toujours la classe "Papa" lors de l'appel à la fonction affiche() depuis une instance de Fiston !
Je pourrais parfaitement contourner ce problème en utilisant des variables non statiques, sauf qu'éthiquement parlant, ça me fait mal au coeur : en effet, ces variables ont pour vocation de ne pas être instanciées puisqu'elles dépendent uniquement de la classe !
L'autre solution serait de réécrire la fonction affiche() mot pour mot dans Fiston, mais là aussi ce serait bien moche, car en réalité, elle est de taille conséquente et Fiston n'est pas la seule classe héritant de Papa...
J'en viens donc à ma question : comment faire ?
Merci d'avance pour vos réactions !