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