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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| <?
/*
** Exemple 1, sans clone, utilisation des références par défaut
*/
class A{
public $c;
public $b_obj;
}
class B{
public $f;
}
$B = new B();
$B->f = "pwet pwet";
$t = new A();
$t->c = "une valeur initiale";
$t->b_obj = $B;
$t_ref = clone($t);
$t->b_obj->f = "pwet pwet je suis différent partout car je suis référencé !!";
echo "<pre>";
var_dump($t);
var_dump($t_ref);
echo "</pre>";
/*
** Exemple 2, avec clone, ipmplémentation individuel de __clone pour A qui permet de bien déréférencer les objets internes.
*/
class A_clone{
public $c;
public $b_obj;
public function __clone(){
$this->b_obj = clone($this->b_obj );
}
}
$Bb = new B();
$Bb->f = "pwet pwet";
$Tt = new A_clone();
$Tt->c = "une valeur initiale";
$Tt->b_obj = $Bb;
$Tt_ref = clone($Tt);
$Tt->b_obj->f = "pwet pwet je NE suis PAS différent partout car je NE suis PAS référencé !!";
echo "<pre>";
var_dump($Tt);
var_dump($Tt_ref);
echo "</pre>";
?> |