PHP OOP-da obýektleri salgylama geçirmek

Bizde şeýle bir User klasymyz bolsun:

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

Bu klasyň obýektini döredeliň:

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

Indi şu ýagdaýy gözüňiziň öňüne getiriň: siz $user üýtgeýjisiniň bahasyny beýleki bir üýtgeýjä, meselem $test üýtgeýjisine berjek bolýarsyňyz.

Eger obýektler hakda däl-de, primitivler hakda, ýagny setirler, sanlar, massiwler we ş.m., gürlän bolsak, onda $test üýtgeýjisine $user üýtgeýjisiniň bahasynyň nusgasy geçerdi.

Bu diýmek, soňky üýtgeşmeleriň haýsydyr bir üýtgeýjide beýleki üýtgeýjiniň bahasyny üýtgetmezdi. Mysala serediň:

index.php<?php
  $user = 1;
  
  $test = $user; // $test üýtgeýjisinde indi 1
  $test = 2;     // $test üýtgeýjisinde indi 2, ýöne $user-da öňki ýaly 1
?>

Obýektler bilen iş başgaça - beýleki üýtgeýjiä ýazylanyňyzda obýektler köçürilmeýär, olara salgylama geçirilýär: bu diýmek, şol iki üýtgeýjiniň hem bahasy bir we şol bir obýektdir. Bunuň möhüm netijesi bar: eger obýektiň käbir aýratynlyklaryny bir üýtgeýji bilen üýtgetseňiz, ikinji üýtgeýjide şol üýtgeşmeler ýüze çykar.

Amaly işde görüň. Ulanyjy bilen obýekt dörediň:

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

Obýekti beýleki üýtgeýjiä beriň:

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

name aýratynlygyny üýtgediň $test üýtgeýjisinde

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

Umumy obýektiň üýtgendigini barlalyň. name aýratynlygyny çap ediň $user üýtgeýjisinden:

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

Product klasyny ýasalyň, onuň içinde şu aýratynlyklar bolsun: name, price.

Задание 2

Product klasynyň obýektini dörediň, ony $product1 üýtgeýjisine ýazdyryň.

Задание 3

$product1 üýtgeýjisiniň bahasyny $product2 üýtgeýjisine beriň. Barlaň şunu, bu iki üýtgeýjiniň bir we şol bir obýekde görkezýändigini.