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.

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
}
 
}
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 ?

Par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
obj_A = new A(...);
obj_A->B_list[0]->foo()
Comment faire pour que foo utilisent les attributs/méthode d'une copie de obj_A ?

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 !