PHP-тегі ООП-де нысандарды сілтеме бойынша беру

Бізде мынадай 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 бар
?>

Нысандармен басқаша - басқа айнымалыға жазған кезде нысандар көшірілмейді, олар сілтеме бойынша беріледі: бұл дегеніміз, бұл екі айнымалының да мәні бір ұшын нысан болады. Бұл маңызды салдарға ие: егер нысанның кейбір қасиеттерін бір айнымалы арқылы өзгертсек, екінші айнымалыда дәл осы өзгерістер пайда болады.

Тәжірибеде көрейік. Пайдаланушымен нысан жасайық:

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 айнымалысына тағайындаңыз. Екі айнымалының да бір нысанға сілтеме жасайтынын тексеріңіз.