Bonjour, j'ai un problème un peu difficile à expliquer concernant les Objets en PHP 4.4. Je vais essayer d'être clair :
2 objets de classe Module et SousModule ont chacun un attribut qui pointe vers l'autre objet.
En sachant que l'objet de classe SousModule est créé dans la constructeur de l'objet Module.
Je n'arrive pas à faire correctement pointer les 2 objets entre eux car :
Quand je modifie directement un attribut de l'objet Module, le SousModule ne voit pas cette modification via son attribut qui pointe vers Module.
Il y a surement eu une copie d'un objet quelque part, mais je ne sais pas où.![]()
J'ai mis en valeur mon problème avec ce code :
Les 2 instructions Display de la fin devraient afficher la même chose.
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
29
30
31
32
33
34
35
36
37
38
39
40
41 <?php class Module { var $id; var $val; var $SousModule; function Module($id) { $this->id = $id; $this->SousModule = new SousModule($this); } function Display() { echo 'Module '.$this->id.' : val = '.$this->val.'<br/>'; } } class SousModule { var $Module; function SousModule(&$Module) { $this->Module = &$Module; } function Display() { $this->Module->Display(); } } // Construction du module (le sous module se crée automatiquement dans le constructeur) $Module = new Module(99); // Modification de l'attribut val $Module->val = '5'; // Affichage du module : val = 5, ok $Module->Display(); // Affichage du module via son sous-module : val != 5, pas ok $Module->SousModule->Display(); ?>
Pouvez m'aider à réparer ce code ?
Partager