FORUM Syndrome-OC - Jacky-PC


  Programmation


  Langage interprété(Php, Perl...)


  [PHP] Classes herités et passage par reference...

 




guy68, nicodache Le salon de discussion : magicrincevent, 1 utilisateur anonyme et 9 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Classes herités et passage par reference...

n°4500
Trracer
Posté le 01-12-2004 à 16:39:34  profilanswer
 

Bonjour,
 
J'ai une question (legerement) tordu ! (je sens que ça va plaire à DDG :lol: )
 
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 :
  1. class A
  2. {
  3.   var $_objet = null;
  4.   var $_hash1 = array();
  5.   var $_hash2 = array();
  6.   function A()
  7.   {
  8.     $this->_objet =& new objet();
  9.   }
  10.   function fA()
  11.   {
  12.     $this->_refC =& new C($this->_objet, $this->_hash1, $this->_hash2);
  13.     $this->_refC->modifObjet();
  14.     // $this->_objet devrait avoir été modifié ici, ce qui n'est pas le cas !
  15.   }
  16. }


 
 

Code :
  1. class B
  2. {
  3.   function B(&$object, &$hash1, &$hash2)
  4.   {
  5.     $this->_objet = $objet;
  6.     $this->_hash1 = $hash1;
  7.     $this->_hash2 = $hash2;
  8.   }
  9. }


 

Code :
  1. class C extends B
  2. {
  3.   function C(&$object, &$hash1, &$hash2)
  4.   {
  5.     parent::B($object, $hash1, $hash2);   
  6.   }
  7.   function modifObjet()
  8.   {
  9.     $this->_objet->AddChild( new AutreObjet() );
  10.   }
  11. }


 
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 :p


Message édité par Trracer le 01-12-2004 à 16:41:13
mood
Google
Posté le 01-12-2004 à 16:39:34  profilanswer
 

n°4501
Trracer
Posté le 01-12-2004 à 20:18:03  profilanswer
 

Bon voila, ça marche :) J'ai encore confondu les pointeurs et les reference "à la php"... Ca m'apprendra !

mood
Google
Posté le 01-12-2004 à 20:18:03  profilanswer
 


Aller à :
Ajouter une réponse

  FORUM Syndrome-OC - Jacky-PC


  Programmation


  Langage interprété(Php, Perl...)


  [PHP] Classes herités et passage par reference...

 

Hit Parade