⊗ppOpAdPBR 23 of 107 menu

Overførsel af objekter som reference i OOP i PHP

Lad os sige, at vi har følgende klasse User:

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

Lad os sige, at vi opretter et objekt af denne klasse:

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

Forestil dig nu følgende situation: du ønsker at tildele værdien af variablen $user til en anden variabel, for eksempel $test.

Hvis det ikke handlede om objekter, men om primitiver, det vil sige strenge, tal, arrays osv., ville variablen $test modtage en kopi af værdien af variablen $user.

Det betyder, at ændringer i en af variablerne herefter ikke ville ændre værdien af den anden variabel. Lad os se på et eksempel:

<?php $user = 1; $test = $user; // variablen $test har nu 1 $test = 2; // variablen $test har nu 2, mens $user stadig har 1 ?>

Med objekter er det anderledes - når de tildeles til en anden variabel, kopieres objekter ikke, men overføres som reference: det betyder, at begge disse variabler har værdien af det samme objekt. Dette har en vigtig konsekvens: hvis du ændrer nogle egenskaber ved objektet med en variabel, vil de samme ændringer vises i den anden variabel.

Lad os se på det i praksis. Lad os oprette et objekt med en bruger:

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

Lad os tildele objektet til en anden variabel:

<?php $test = $user; ?>

Lad os ændre egenskaben name i variablen $test

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

Lad os kontrollere, at det fælles objekt er ændret. Lad os udskrive egenskaben name fra variablen $user:

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

Opret klassen Product, hvor der vil være følgende egenskaber: name, price.

Opret et objekt af klassen Product, gem det i variablen $product1.

Tildel værdien af variablen $product1 til variablen $product2. Kontroller, at begge variabler refererer til det samme objekt.

Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis