PHP OOP හි වස්තූන් යොමුවක් ලෙස සම්ප්‍රේෂණය කිරීම

අපට පහත දැක්වෙන 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 විචල්‍යයට ආරෝපණය කරන්න. විචල්‍ය දෙකම එකම වස්තුවකට යොමු වන බව පරීක්ෂා කරන්න.