PHP හි OOP හි දේපල ලිවීමේ මැජික්
මැජික් ක්රමය __set කැඳවනු ලබන්නේ
පවතින නොවන හෝ සැඟවුණු දේපලක අගය වෙනස්
කිරීමට උත්සාහ කරන විට ය. පරාමිති ලෙස
එය දේපලේ නම සහ එයට ආරෝපණය කිරීමට උත්සාහ කරන
අගය ලබා ගනී.
අපි ප්රායෝගික උදාහරණයක් බලමු.
අපට Test යන පන්තිය ලබා දී ඇතැයි සිතමු:
<?php
class Test
{
private $prop1;
private $prop2;
}
?>
මෙම පන්තිය තුළ අපි මැජික් ක්රමය
__set සාදන්න, එය ශ්රිතය භාවිතා කරමින්
var_dump දේපලේ නම ප්රතිදානය කරනු ඇත,
යොමුවක් සිදු වූ සහ අගය,
මෙම දේපල සැකසීමට උත්සාහ කරයි:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
var_dump($property . ' ' .$value);
}
}
?>
අපගේ පන්තියේ ක්රියාකාරිත්වය පරීක්ෂා කරමු:
<?php
$test = new Test;
$test->prop = 'value'; // __set ක්රමයේ var_dump 'prop value' ප්රතිදානය කරයි
?>
දැන් අපි අගය සැකසීමට පටන් ගනිමු
දේපල, එහි නම විචල්යයේ ගබඩා කර ඇත
$property:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
$this->$property = $value; // අගය සැකසන්න
}
}
?>
දැන් අපට පෞද්ගලික දේපල වලට ලිවිය හැකිය පන්තියෙන් පිටත:
<?php
$test = new Test;
$test->prop1 = 1; // 1 ලියන්න
$test->prop2 = 2; // 2 ලියන්න
?>
අපට ලිවිය හැකි නමුත්, එය ලියා ඇත්දැයි පරීක්ෂා කරන්න එහි යමක් තිබේද - නැත, මන්ද දේපල පෞද්ගලික බැවින්.
මෙම දේපල සඳහා ගෙට්ටර් එකක් සෑදිය හැකිය හෝ
සරලව මැජික් ක්රමය භාවිතා කරන්න
__get. අපි දෙවන විකල්පය භාවිතා කරමු:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
$this->$property = $value;
}
// දේපල සඳහා මැජික් ගෙට්ටර්:
public function __get($property)
{
return $this->$property;
}
}
?>
දැන් අපට අපගේ පන්තියේ ක්රියාකාරිත්වය පරීක්ෂා කළ හැකිය. පරීක්ෂා කරමු:
<?php
$test = new Test;
$test->prop1 = 1; // 1 ලියන්න
$test->prop2 = 2; // 2 ලියන්න
echo $test->prop1; // 1 ප්රතිදානය කරයි
echo $test->prop2; // 2 ප්රතිදානය කරයි
?>
ඇත්ත වශයෙන්ම, ඇත්ත වශයෙන්ම, අවසර දිය යුතු නොවේ සියල්ලටම පෞද්ගලික දේපල වලට ලිවීමට, එසේ නොමැතිනම් මෙම පෞද්ගලික දේපලවල සාරය නැති වේ (ඒවා පොදු කිරීම සහ සියල්ල සරල කිරීම).
එමනිසා මෙම ක්රමය භාවිතා කළ යුත්තේ පමණි ඇත්තෙන්ම අවශ්යතාවයක් ඇති විට. ඊළඟ පාඩම් වලදී අපි තවත් උදාහරණ සලකා බලමු සාර්ථක යෙදුම.