⊗ppOpAdPBR 23 of 107 menu

Passage d'objets par référence en POO en PHP

Supposons que nous ayons la classe User suivante :

<?php class User { public $name; public $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

Supposons que nous créions un objet de cette classe :

<?php $user = new User('john', 30); ?>

Imaginez maintenant la situation suivante : vous voulez assigner la valeur de la variable $user à une autre variable, par exemple $test.

S'il ne s'agissait pas d'objets, mais de primitives, c'est-à-dire de chaînes de caractères, de nombres, de tableaux, etc., alors la variable $test recevrait une copie de la valeur de la variable $user.

Cela signifie que les modifications apportées à l'une des variables ultérieurement ne changeraient pas la valeur de l'autre variable. Regardons un exemple :

<?php $user = 1; $test = $user; // la variable $test contient maintenant 1 $test = 2; // la variable $test contient maintenant 2, et $user - toujours 1 ?>

Avec les objets, c'est différent - lors de l'assignation à une autre variable, les objets ne sont pas copiés, mais sont passés par référence : cela signifie que ces deux variables ont pour valeur le même objet. Cela a une conséquence importante : si vous modifiez certaines propriétés de l'objet avec l'une des variables, la seconde variable reflétera ces mêmes changements.

Voyons cela en pratique. Créons un objet utilisateur :

<?php $user = new User('john', 30); ?>

Assignons l'objet à une autre variable :

<?php $test = $user; ?>

Modifions la propriété name dans la variable $test

<?php $test->name = 'eric'; ?>

Vérifions que l'objet partagé a changé. Affichons la propriété name de la variable $user :

<?php echo $user->name; // affichera 'eric' ! ?>

Créez une classe Product, dans laquelle se trouveront les propriétés suivantes : name, price.

Créez un objet de la classe Product, enregistrez-le dans la variable $product1.

Assignez la valeur de la variable $product1 à la variable $product2. Vérifiez que les deux variables référencent le même objet.

Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser