⊗ppOpMgGP 88 of 107 menu

PHP да ООП да свойстваларни олиш магияси

Биз кўриб чиқадиган кейинги магик метод __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' ни кўрсатади - свойстванинг номи ?>

Кўриб турганингиздек, бизнинг магик метод хулоса ва мавжуд бўлмаган свойстваларга мурожаатга жавоб беради, лекин оммавий свойствага мурожаатни эътиборга олмайди - улар аввалги каби ишлайверади.

Ўзбек
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш