Je dois faire en sorte que le constructeur d'une classe en PHP appelle le constructeur de son parent. du parent (grand-parent ?) sans appeler le constructeur parent.
// main class that everything inherits
class Grandpa
{
public function __construct()
{
}
}
class Papa extends Grandpa
{
public function __construct()
{
// call Grandpa's constructor
parent::__construct();
}
}
class Kiddo extends Papa
{
public function __construct()
{
// THIS IS WHERE I NEED TO CALL GRANDPA'S
// CONSTRUCTOR AND NOT PAPA'S
}
}
Je sais que c'est une chose bizarre à faire et j'essaie de trouver un moyen qui ne sente pas mauvais mais néanmoins, je suis curieux de savoir si c'est possible.
0 votes
Y a-t-il une raison pour laquelle vous ne pouvez pas simplement instancier Grand-père à l'intérieur de la construction de Kiddo ?
0 votes
Le constructeur de Grampa définit des propriétés pour lui-même qui sont héritées par ses enfants. Papa fait des choses dans son constructeur qui vont perturber Kiddo. J'ai donc besoin de l'appel au constructeur de Grand-père pour définir les propriétés de Kiddo pendant la construction.
5 votes
Alors, Kiddo ne devrait-il pas s'étendre de Grand-père et non de Papa.
4 votes
@MitMaro. Je suis d'accord et j'ai en fait résolu mon problème actuel en créant une classe intermédiaire qui a étendu Grand-père. Puis Papa et Kiddo ont étendu cette classe. Kiddo avait besoin d'une fonctionnalité intermédiaire de Papa mais n'aimait pas son constructeur. La classe a donc cette fonctionnalité supplémentaire et les deux l'étendent.
3 votes
Une solution parfaite. Vous devriez l'afficher comme une réponse.
0 votes
Changer la réponse acceptée pour celle qui résout réellement la question posée.
0 votes
Que faire si la classe grand-parent est abstraite ?