Oordra van voorwerpe volgens verwysing in OOP in PHP

Gestel ons het die volgende klas User:

User.php<?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:

index.php<?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:

index.php<?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:

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

Ken die voorwerp toe aan 'n ander veranderlike:

index.php<?php
  $test = $user;
?>

Verander die eienskap name in die veranderlike $test

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

Kom ons kyk of die gedeelde voorwerp verander het. Druk die eienskap name van die veranderlike $user:

index.php<?php
  echo $user->name; // sal 'eric' druk!
?>
Задание 1

Maak 'n klas Product, waarin die volgende eienskappe sal wees: name, price.

Задание 2

Skep 'n voorwerp van die klas Product, skryf dit in die veranderlike $product1.

Задание 3

Ken die waarde van veranderlike $product1 toe aan die veranderlike $product2. Kontroleer dat albei veranderlikes na een en dieselfde voorwerp verwys.