Oordra van voorwerpe volgens verwysing in OOP in PHP
Gestel ons het die volgende klas User:
<?php
class User
{
public $name;
public $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
}
?>
Gestel ons skep 'n voorwerp van hierdie klas:
<?php
$user = new User('john', 30);
?>
Stel jou nou die volgende situasie voor: jy
wil die waarde van die veranderlike $user toewys
aan 'n ander veranderlike, byvoorbeeld
$test.
As dit nie oor voorwerpe gegaan het nie, maar oor primitiewe,
dit wil sê stringe, getalle, skikkings, ens.,
sou 'n kopie van die waarde van veranderlike $user
in die veranderlike $test geplaas word.
Dit beteken dat veranderinge aan enige van die veranderlikes daarna nie die waarde van die ander veranderlike sou verander nie. Kom ons kyk na 'n voorbeeld:
<?php
$user = 1;
$test = $user; // in veranderlike $test is nou 1
$test = 2; // in veranderlike $test is nou 2, maar in $user is steeds 1
?>
Met voorwerpe is dit anders - wanneer hulle aan 'n ander veranderlike toegeken word, word voorwerpe nie gekopieer nie, maar oorgedra volgens verwysing: dit beteken dat albei hierdie veranderlikes een en dieselfde voorwerp as waarde het. Dit het 'n belangrike gevolg: as jy enige eienskappe van die voorwerp verander met behulp van een veranderlike, sal dieselfde veranderinge in die tweede veranderlike verskyn.
Kom ons kyk prakties. Skep 'n voorwerp met 'n gebruiker:
<?php
$user = new User('john', 30);
?>
Ken die voorwerp toe aan 'n ander veranderlike:
<?php
$test = $user;
?>
Verander die eienskap name
in die veranderlike $test
<?php
$test->name = 'eric';
?>
Kom ons kyk of die gedeelde voorwerp verander het.
Druk die eienskap name
van die veranderlike $user:
<?php
echo $user->name; // sal 'eric' druk!
?>
Maak 'n klas Product, waarin
die volgende eienskappe sal wees: name,
price.
Skep 'n voorwerp van die klas Product, skryf
dit in die veranderlike $product1.
Ken die waarde van veranderlike $product1 toe
aan die veranderlike $product2. Kontroleer
dat albei veranderlikes na een en dieselfde voorwerp verwys.