Objets et r�f�rences
Un des piliers de la POO de PHP 5 est le fait que les "objets sont pass�s par r�f�rence par d�faut". Ce n'est pas compl�tement vrai. Cette section rectifie cette g�n�ralisation avec quelques exemples.
Une r�f�rence PHP est un alias, qui permet � deux variables diff�rentes de repr�senter la m�me valeur. Depuis PHP 5, une variable contenant un objet ne contient plus l'objet lui-m�me. Il contient un identifiant d'objet, ce qui permet aux accesseurs d'objets de trouver cet objet. Lorsque l'objet est utilis� comme argument, retourn� par une fonction ou assign� � une autre variable, les diff�rentes variables ne sont pas des alias : ils contiennent le m�me identifiant, qui pointe sur la m�me valeur.
Exemple #1 R�f�rences et Objets
<?php
class A {
public $foo = 1;
}
$a = new A;
$b = $a; // $a et $b sont des copies du m�me identifiant
// ($a) = ($b) = <id>
$b->foo = 2;
echo $a->foo."\n";
$c = new A;
$d = &$c; // $c et $d sont des r�f�rences
// ($c,$d) = <id>
$d->foo = 2;
echo $c->foo."\n";
$e = new A;
function foo($obj) {
// ($obj) = ($e) = <id>
$obj->foo = 2;
}
foo($e);
echo $e->foo."\n";
?>
L'exemple ci-dessus va afficher :
2 2 2