downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Sérialisation d'objets> <Late Static Bindings (Résolution statique à la volée)
Last updated: Fri, 11 Dec 2009

view this page in

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 {
    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


add a note add a note User Contributed Notes
Objets et références
There are no user contributed notes for this page.

 
show source | credits | sitemap | contact | advertising | mirror sites