⊗ppOpAdPBR 23 of 107 menu

Överföring av objekt genom referens i OOP i PHP

Låt oss säga att vi har följande klass User:

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

Låt oss säga att vi skapar ett objekt av denna klass:

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

Föreställ dig nu följande situation: du vill tilldela värdet av variabeln $user till en annan variabel, till exempel $test.

Om det inte handlade om objekt, utan om primitiva typer, dvs strängar, nummer, arrayer etc., skulle en kopia av värdet av variabeln $user hamna i variabeln $test.

Det betyder att ändringar i någon av variablerna herefter inte skulle ändra värdet på den andra variabeln. Låt oss titta på ett exempel:

<?php $user = 1; $test = $user; // i variabeln $test finns nu 1 $test = 2; // i variabeln $test finns nu 2, men i $user finns fortfarande 1 ?>

Med objekt är det annorlunda - när de tilldelas till en annan variabel kopieras inte objekten, utan överförs genom referens: det betyder att båda dessa variabler har samma objekt som värde. Detta har en viktig konsekvens: om några egenskaper i objektet ändras med hjälp av en variabel, kommer samma ändringar att dyka upp i den andra variabeln.

Låt oss se det i praktiken. Skapa ett användarobjekt:

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

Tilldela objektet till en annan variabel:

<?php $test = $user; ?>

Låt oss ändra egenskapen name i variabeln $test

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

Låt oss kontrollera att det delade objektet har ändrats. Låt oss skriva ut egenskapen name från variabeln $user:

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

Skapa en klass Product, där följande egenskaper finns: name, price.

Skapa ett objekt av klassen Product, skriv det till variabeln $product1.

Tilldela värdet av variabeln $product1 till variabeln $product2. Kontrollera att båda variablerna refererar till ett och samma objekt.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa