⊗ppOpMgROP 89 of 107 menu

PHP OOP හි කියවීමට පමණක් ඇති ගුණාංග

සියලුම ගුණාංග පුද්ගලික වර්ගයේ වන පන්තියක් සලකා බලමු:

<?php class Test { private $prop1 = 1; private $prop2 = 2; } ?>

දැන් මෙම ගුණාංග බාහිර ලෝකයේදී කියවීමට පමණක් ලබා ගත හැකි වන පරිදි කරමු. මීට පෙර, අපි එක් එක් ගුණාංග සඳහා ගෙටර් තනා සෙටර් නොතනා මේ වගේ දේ කලා.

දැන් මෙම කාර්යය විසඳීම සඳහා අපි මායා ක්‍රමය __get භාවිතා කරමු. එය තුළ ඉල්ලූ ගුණාංගයේ අගය ආපසු ලබා දෙමු. එය කරන්නේ කෙසේද: ඉල්ලූ ගුණාංගයේ නම __get ක්‍රමයේ පරාමිතියට ඇතුළු වේ, අපගේ නඩුවේදී එය $property වේ.

මෙයින් අදහස් කරන්නේ අපට විචල්‍යයක ගබඩා කර ඇති නම සහිත ගුණාංගය කියවිය හැකි බවයි, මෙහෙම: $this->$property (ගුණාංගයේ නම විචල්‍යය වනු ඇත, එනම් ආරම්භයේ ඩොලර් සලකුණක් සමඟ, අපි එය පෙර පාඩම් වලදී ඉගෙන ගත්තෙමු).

දැන් විස්තර කරන ලද ක්‍රමය __get කරමු:

<?php class Test { private $prop1 = 1; private $prop2 = 2; public function __get($property) { return $this->$property; } } ?>

ගුණාංග කියවීම සඳහා අපි එය භාවිතා කරමු:

<?php $test = new Test; echo $test->prop1; // ප්‍රතිදානය කරන්නේ 1 echo $test->prop2; // ප්‍රතිදානය කරන්නේ 2 ?>

ගුණාංගයකට යමක් ලිවීමට උත්සාහ කිරීම දෝෂයක් ඇති කරයි:

<?php $test = new Test; $test->prop1 = 2; // දෝෂයක් ලබා දෙයි ?>

අපට අවශ්‍යයි එය වනු ඇත: ගුණාංගය කියවිය හැකි, නමුත් ලිවිය නොහැක.

නොපවතින ගුණාංගයක් කියවීමට උත්සාහ කිරීම දෝෂයක් ලබා දෙයි:

<?php $test = new Test; echo $test->prop3; // දෝෂයක් ලබා දෙයි ?>

පහත සඳහන් සියුම් කරුණ ද සැලකිල්ලට ගන්න: අපි කියවීමට පමණක් ඇති ගුණාංග සාදන විට පැරණි ක්‍රමයෙන්, එවිට ගුණාංගය කියවීමට, අපි ගෙටර් ක්‍රමය භාවිතා කලෙමු.

නව ක්‍රමයේදී අපි නිශ්චිතවම ගුණාංග වෙත හැරෙමු, ඒවා පොදු යැයි සිතමින්. නමුත් ඒවාට ලිවිය නොහැක, ඒවා පුද්ගලික යැයි සිතමින්.

User කියන මේ පන්තිය ලබා දී ඇතැයි සිතමු, එහි ගුණාංග ගෙටර් භාවිතා කරමින් කියවීමට පමණක් ලබා ගත හැකිය:

<?php class User { private $name; private $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function getName() { return $this->name; } public function getAge() { return $this->age; } } ?>

ගෙටර් වෙනුවට මායා ක්‍රමය __get භාවිතා වන පරිදි මෙම පන්තියේ කේතය නැවත සකස් කරන්න.

සිංහල
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
අපි වෙබ් අඩවිය ක්‍රියාත්මක කිරීම, විශ්ලේෂණය සහ පුද්ගලීකරණය සඳහා කුකී භාවිතා කරමු. දත්ත සැකසීම සිදුකරනු ලබන්නේ ගෝපනීයතා ප්‍රතිපත්තිය අනුව ය.
සියල්ල පිළිගන්න කොන්දේසි ප්‍රතික්ෂේප කරන්න