PHP да ООПда объектларга reference орқали ўтказиш

Фарз қилайлик, бизда User номли шундай класс бор:

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

Фарз қилайлик, биз бу классдан объект яратамиз:

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

Энди куйидаги вазиятни тасаввур қилинг: сиз $user ўзгарувчисининг қийматини бошқа бир ўзгарувчига, масалан $test га тенглаштирмоқчисиз.

Агар объектлар ҳақида эмас, балки примитивлар ҳақида гапирсак, яъни сатрлар, сонлар, массивлар ва ҳ.к, унда $test ўзгарувчисига $user ўзгарувчисининг қийматининг нусхаси ўтган бўлур эди.

Бунинг маъноси, кейинчалик ўзгарувчиларнинг биронтасини ўзгартириш иккинчи ўзгарувчининг қийматини ўзгартирмасди. Куйидаги мисолга кўзам:

index.php<?php
  $user = 1;
  
  $test = $user; // $test ўзгарувчисида энди 1
  $test = 2;     // $test ўзгарувчисида энди 2, $user да эса 1 қолади
?>

Объектлар билан бошқача - иккинчи ўзгарувчига ёзганда объектлар нусхаланмайди, балки reference орқали ўтказилади: бунинг маъноси, бу икки ўзгарувчининг қиймати битта ва худди шу объектдир. Бу мухим оқибатга эга: агар объектнинг қандайдир хоссаларини бирор ўзгарувчи ёрдамида ўзгартирилса, иккинчи ўзгарувчида худди шу ўзгаришлар пайдо бўлади.

Келиб, амалиётда кўриб чиқайлик. Фойдаланувчи билан объект яратайлик:

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

Объектни бошқа ўзгарувчига тенглаштирамиз:

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

$test ўзгарувчисида name хоссасини ўзгартирамиз

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

Келиб, умумий объект ўзгарганини текшириб кўрамиз. $user ўзгарувчисидан name хоссасини чиқарайлик:

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

Product классни яратинг, унда куйидаги хоссалар бўлсин: name, price.

Задание 2

Product классидан объект яратиб, уни $product1 ўзгарувчисига ёзинг.

Задание 3

$product1 ўзгарувчисининг қийматини $product2 ўзгарувчисига тенглаштиринг. Иккала ўзгарувчи ҳам битта объектга ишорат қилаётиганини текшириб кўринг.