Bonjour,
J'ai une question (legerement) tordu ! (je sens que ça va plaire à DDG
)
Dans une methode de classe je crée une reference à une autre classe qui prend pour argument trois references (un objet et deux hash). Cette derniere passe elle-même en argument ces trois references au constructeur de sa classe parente.
Le probleme est que le passage par reference semble s'interrompre quelque part puisque l'objet que je veux modifier dans les classes n'est pas mis à jour. Pour autant les classes font leur job (j'ai une variable "pseudo static" qui s'incremente à chaque modification de l'objet).
Pour donner un exemple :
Code :
- class A
- {
- var $_objet = null;
- var $_hash1 = array();
- var $_hash2 = array();
- function A()
- {
- $this->_objet =& new objet();
- }
- function fA()
- {
- $this->_refC =& new C($this->_objet, $this->_hash1, $this->_hash2);
- $this->_refC->modifObjet();
- // $this->_objet devrait avoir été modifié ici, ce qui n'est pas le cas !
- }
- }
|
Code :
- class B
- {
- function B(&$object, &$hash1, &$hash2)
- {
- $this->_objet = $objet;
- $this->_hash1 = $hash1;
- $this->_hash2 = $hash2;
- }
- }
|
Code :
- class C extends B
- {
- function C(&$object, &$hash1, &$hash2)
- {
- parent::B($object, $hash1, $hash2);
- }
- function modifObjet()
- {
- $this->_objet->AddChild( new AutreObjet() );
- }
- }
|
Voila grossierement le topo...
Donc la question est : comment passe-t-on une reference d'objet en cascade au travers des constructeurs de classes hérités ?
J'ai essaye diverses choses mais à chaque fois cela agit par recopie plutot que que par reference. Et donc l'objet en ressort non modifié.
Ca doit probablement être une betise, mais je trouve pas 
Message édité par Trracer le 01-12-2004 à 16:41:13