Bonsoir,
J'ai un petit problème assez simple d'héritage, tellement simple que je n'arrive pas à le résoudre ...
Mettons deux classes A et B
La classe A doit posseder plusieurs objets B.
Toutefois un objet B contenu par A, doit pouvoir utiliser des méthodes et des attributs de l'objet A qui le contient.
La classe A ne fera jamais appel aux méthodes de B par elle même.
Donc bon ça me paraît évident que B doit hériter de A, mais comment récupérer l'objet A qui a appelé une méthode de B ?
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
26
27
28 class A { protected $A_id; public $B_list; public __construct (...) { $B_list = array(); for (..) $B_list = new B (...); } protected A_funct(...) { ... } } class B extends A { public $B_data; public __construct (...) { utilisation de $A_id et de A_funct(..) de l\'objet A qui aura appelé ce construct. } public __foo (...) { utilisation de $A_id et de A_funct(..) de l\'objet A qui aura appelé cette méthode foo } }
Par exemple :
Comment faire pour que foo utilisent les attributs/méthode d'une copie de obj_A ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 obj_A = new A(...); obj_A->B_list[0]->foo()
Je sais bien que les passer en paramètres résoudrait le problème mais ça fait pas très POO ...
N'existe t'il pas une méthode plus "propre" que de passer au constructeur B une copie de l'élément A actuel ($this) ?
Merci d'avance pour vos réponses !








Répondre avec citation
Partager