PHP OOP හි වස්තූන් යොමුවක් ලෙස සම්ප්රේෂණය කිරීම
අපට පහත දැක්වෙන User ක්රමලේඛයක් ඇතැයි සිතමු:
<?php
class User
{
public $name;
public $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
}
?>
අපි මෙම ක්රමලේඛයෙන් වස්තුවක් සාදමු:
<?php
$user = new User('john', 30);
?>
දැන් පහත තත්වය සිතන්න: ඔබට
$user විචල්යයේ අගය වෙනත්
විචල්යයකට, උදාහරණයක් ලෙස
$test විචල්යයට, ආරෝපණය කිරීමට අවශ්යයි.
මෙය වස්තූන් සම්බන්ධ නොවී මූලික දත්ත වර්ග,
එනම් පේළි, සංඛ්යා, අරා සහ යනාදිය සම්බන්ධයෙන් නම්,
$test විචල්යයට $user විචල්යයේ අගයේ
පිටපතක් ලැබෙනු ඇත.
මෙයින් අදහස් කරන්නේ පසුව ඕනෑම විචල්යයක් වෙනස් කිරීම අනෙක් විචල්යයේ අගය වෙනස් නොකරන බවයි. උදාහරණයක් බලමු:
<?php
$user = 1;
$test = $user; // $test විචල්යයේ දැන් 1 ඇත
$test = 2; // $test විචල්යයේ දැන් 2 ඇත, නමුත් $user හි තවමත් 1 ඇත
?>
වස්තූන් සමඟ එසේ නොවේ - වෙනත් විචල්යයකට ලියා ඇති විට වස්තූන් පිටපත් නොකරන අතර, ඒවා යොමුවක් ලෙස සම්ප්රේෂණය වේ: මෙයින් අදහස් කරන්නේ මෙම විචල්ය දෙකම අගයක් ලෙස එකම වස්තුව දරන බවයි. මෙහි වැදගත් ප්රතිවිපාකයක් ඇත: එක් විචල්යයක් භාවිතයෙන් වස්තුවේ ගුණාංග කිහිපයක් වෙනස් කළහොත්, දෙවන විචල්යයේ ද එම වෙනස්කම් දිස්වනු ඇත.
අපි ප්රායෝගිකව බලමු. පරිශීලකයෙකු සමඟ වස්තුවක් සාදමු:
<?php
$user = new User('john', 30);
?>
වස්තුව වෙනත් විචල්යයකට ආරෝපණය කරමු:
<?php
$test = $user;
?>
$test විචල්යයේ
name ගුණාංගය වෙනස් කරමු
<?php
$test->name = 'eric';
?>
පොදු වස්තුව වෙනස් වී ඇත්දැයි පරීක්ෂා කර බලමු.
$user විචල්යයෙන්
name ගුණාංගය ප්රතිදානය කරමු:
<?php
echo $user->name; // 'eric' ප්රතිදානය කරයි!
?>
Product ක්රමලේඛයක් සාදන්න, එහි
පහත ගුණාංග අඩංගු වේ: name,
price.
Product ක්රමලේඛයෙන් වස්තුවක් සාදා,
එය $product1 විචල්යයට ලියන්න.
$product1 විචල්යයේ අගය
$product2 විචල්යයට ආරෝපණය කරන්න. විචල්ය දෙකම
එකම වස්තුවකට යොමු වන බව පරීක්ෂා කරන්න.