Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1468 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  passage par référence pour objets php [OK]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

passage par référence pour objets php [OK]

n°731732
boulax
Inserer phrase hype en anglais
Posté le 19-05-2004 à 16:29:08  profilanswer
 

J'ai un problème avec une implémentation d'arbre n-aire en Php.  
 
Il faut que je puisse créer tout les noeuds puis composer l'arbre un peu comme je veux par la suite c'est a dire en rattachant les fils les uns aux autres.
 
J'ai donc un objet "Node" (noeud) avec une méthode "addChild($Node)"  (qui ajoute a this l'objet $Node en tant que fils) et je voudrai pouvoir passer les noeuds par référence afin de pouvoir leur ajouter par la suite des autres fils via les memes variables.
 
J'ai essayé plusieurs combinaisons avec le "&" sans succes
 
notamment ceci, que j'aurai dit juste [:spamafote]
 


function addChild(&$newNode) // fonction dans la classe
...
$Racine->addChild($Fils1); // dans le main
$Fils1->addChild($Fils2);


 
Un dump de l'arbre donne "Racine" et "Fils1"... (manque fils2)
 
Toute suggestion a ce propos est la bienvenue.


Message édité par boulax le 21-05-2004 à 10:00:54

---------------
Posté depuis des chiottes, sales. Me gusta.
mood
Publicité
Posté le 19-05-2004 à 16:29:08  profilanswer
 

n°733032
boulax
Inserer phrase hype en anglais
Posté le 20-05-2004 à 22:37:16  profilanswer
 

up, personne ?
 
+Edit du post


Message édité par boulax le 20-05-2004 à 22:40:20

---------------
Posté depuis des chiottes, sales. Me gusta.
n°733045
gizmo
Posté le 20-05-2004 à 23:15:56  profilanswer
 

Et le reste du code, on le devine?

n°733051
boulax
Inserer phrase hype en anglais
Posté le 20-05-2004 à 23:30:39  profilanswer
 

gizmo a écrit :

Et le reste du code, on le devine?


 
bah je vois pas ce qu'il te faut  :??:  
Ma question c'est juste comment filer des references d'objets a un autre objet.


---------------
Posté depuis des chiottes, sales. Me gusta.
n°733053
Profil sup​primé
Posté le 20-05-2004 à 23:41:44  answer
 

classe::methode()

n°733056
boulax
Inserer phrase hype en anglais
Posté le 20-05-2004 à 23:45:14  profilanswer
 

c'est censé m'aider ?


---------------
Posté depuis des chiottes, sales. Me gusta.
n°733057
Profil sup​primé
Posté le 20-05-2004 à 23:48:11  answer
 

on est censé comprendre? :/

n°733059
boulax
Inserer phrase hype en anglais
Posté le 20-05-2004 à 23:50:07  profilanswer
 

Qu'est ce que t'as pas compris ?


---------------
Posté depuis des chiottes, sales. Me gusta.
n°733117
gizmo
Posté le 21-05-2004 à 08:09:36  profilanswer
 

boulax a écrit :

bah je vois pas ce qu'il te faut  :??:  
Ma question c'est juste comment filer des references d'objets a un autre objet.


Alors dans ce cas, ton code est juste. Suffisait de lire la doc pour s'en convaincre. Maintenant, si ce n'est pas le cas en pratique, c'est que tu fais une merde ailleurs dans ton code...

n°733156
boulax
Inserer phrase hype en anglais
Posté le 21-05-2004 à 09:27:06  profilanswer
 

Oui, je pense que ca vient de mon objet noeud. En fait je stocke les fils dans un tableau en faisant un array_push et apparemment cette méthode effectuerait une recopie. Je vais tester en faisant des affectations de références ('=&') à la place.
 
EDIT: voici donc le code qui fonctionne
 


function addChild(&$child) // dans classe noeud
{  
 $this->Children[] =& $child;    
}
....
function &getRoot() // dans classe arbre
{
 return $this->Root;
}
.....
// tests
$ctarbre = new TreeView(new Node(new TreeValue("onclick","display0" )));
$n0 =& $ctarbre->getRoot();
$n1 = new Node(new TreeValue("oncolck","display1" ));
$n2 = new Node(new TreeValue("oncolck","display2" ));
$n3 = new Node(new TreeValue("oncolck","display3" ));
$n4 = new Node(new TreeValue("oncolck","display4" ));
$n5 = new Node(new TreeValue("oncolck","display5" ));
$n6 = new Node(new TreeValue("oncolck","display6" ));
$n7 = new Node(new TreeValue("oncolck","display7" ));
$n8 = new Node(new TreeValue("oncolck","display8" ));
$n9 = new Node(new TreeValue("oncolck","display9" ));
 
 
$n0->addChild($n1) ;
$n0->addChild($n2) ;
$n0->addChild($n3) ;
   
$n1->addChild($n4);
$n1->addChild($n5);
$n1->addChild($n6);
 
 
$n4->addChild($n7);
$n3->addChild($n8);
 
$n0->addChild($n9);
 
 
$ctarbre->paintTreeView();


 
ce qui donne bien :


display0  
       display1  
            display4  
            display5  
            display6  
       display2  
       display3


Message édité par boulax le 21-05-2004 à 10:00:26

---------------
Posté depuis des chiottes, sales. Me gusta.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  passage par référence pour objets php [OK]

 

Sujets relatifs
[c][Resolu]Passage d'un tableau à une fonctionretour par reference ou par copie
[PHP-Sogenactif] Probleme de passage de variables de sessions [resolu]passage de paramétre
destructeur & referencePassage d'un stream en paramétre ?
passage de parametres d'un programme à un autre[php] limiter en passage par adresse ?
[c++] probleme de comparaison de type d'objets derivésPassage de EasyPHP/WIN à PHP/Mysql sous Linux
Plus de sujets relatifs à : passage par référence pour objets php [OK]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR