Objets et références

1 h Niveau 7

Un des piliers de la POO de PHP 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. Dans PHP, une variable objet ne contient plus l'objet en lui-même comme valeur. Elle contient seulement un identifiant d'objet, 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 : elles contiennent des copies de l'identifiant, qui pointent sur le même objet.

exemple :

<?php
class A {
    public $foo = 1;
}  

$a = new A;
// $a et $b sont des copies du même identifiant
// ($a) = ($b) = <id>
$b = $a;
$b->foo = 2;
echo($a->foo."\n");


$c = new A;
// $c et $d sont des références
// ($c,$d) = <id>
$d = &$c;

$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
logo discord

Besoin d'aide ?

Rejoignez notre communauté officielle et ne restez plus seul à bloquer sur un problème !

En savoir plus