égaliter entre 2 objets

[Résolu]
Signaler
Messages postés
54
Date d'inscription
vendredi 10 septembre 2004
Statut
Membre
Dernière intervention
15 octobre 2009
-
Messages postés
54
Date d'inscription
vendredi 10 septembre 2004
Statut
Membre
Dernière intervention
15 octobre 2009
-
Bonjour,
je crée un objet. Après l'avoir initialiser, je veux le mettre dans un tableau.
Voici ma procédure :

$i=0;
$a = new objet1;
$b = Array(new objet1);
while (i<30)
{
   $a->propriete1='tata';
   $a->propriete2='toto';
   $b[$i]=$a;
$i++;
}
 Ceci marche en local avec easy php mais pas en ligne. Pour que ça marche en ligne je dois faire :
$b[$i]->propriete1=   $a->propriete1;
$b[$i]->propriete2=   $a->propriete2;

Existe t il un moyen de passer outre ceci car j'ai un objet qui possède plus de 20 propriétés et ça me gave de devoir faire comme ça ?
Merci.

Pizza Dude

3 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Hello,

c'est ça que tu veux ?
<?php
class A {
    public $prop1;
    public $prop2;
}

$a = new A;
$i = 1;
while($i < 30) {
    $a->prop1='a'.$i;
    $a->prop2='b'.$i;
    $b[$i] = clone $a;
    $i++;
}
var_dump($b);
?>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Petite explication au passage, en php5, les objets sont toujours donnés par référence.
Donc que tu modifies tes propriétés de ton objet $a dans la boucle, celles des $a que tu as stockés dans $b changent aussi, parce qu'il s'agit chaque fois de référence à ton $a. Tu n'as qu'un objet, en clair.
clone évite ceci.
Il y a d'autres moyens.
Messages postés
54
Date d'inscription
vendredi 10 septembre 2004
Statut
Membre
Dernière intervention
15 octobre 2009

Merci beaucoup !
j'ai vu un tutoriel sur les itérateurs qui pourraient m'aider.

Pizza Dude