⊗ppOpAdPBR 23 of 107 menu

Overføring av objekter ved referanse i OOP i PHP

La oss si 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; } } ?>

La oss si at vi oppretter et objekt av denne klassen:

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

Tenk deg nå følgende situasjon: du vil tilordne verdien av variabelen $user til en annen variabel, for eksempel $test.

Hvis det ikke handlet om objekter, men om primitiver, det vil si strenger, tall, arrays og lignende, ville variabelen $test fått en kopi av verdien til variabelen $user.

Det betyr at endringer i en av variablene heretter ikke ville endret verdien til den andre variabelen. La oss se på et eksempel:

<?php $user = 1; $test = $user; // i variabelen $test er det nå 1 $test = 2; // i variabelen $test er det nå 2, mens i $user er det fortsatt 1 ?>

Med objekter er det annerledes - når de tilordnes til en annen variabel, kopieres ikke objektene, men overføres ved referanse: det betyr at begge disse variablene har samme objekt som verdi. Dette har en viktig konsekvens: hvis du endrer noen egenskaper ved objektet med bruk av en variabel, vil de samme endringene vises i den andre variabelen.

La oss se på det i praksis. La oss opprette et brukerobjekt:

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

La oss tilordne objektet til en annen variabel:

<?php $test = $user; ?>

La oss endre egenskapen name i variabelen $test

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

La oss sjekke at det delte objektet er endret. La oss skrive ut egenskapen name fra variabelen $user:

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

Lag en klasse Product, der følgende egenskaper finnes: name, price.

Opprett et objekt av klassen Product, skriv det til variabelen $product1.

Tilordne verdien av variabelen $product1 til variabelen $product2. Sjekk at begge variablene refererer til ett og samme objekt.

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