⊗ppOpMgSP 91 of 107 menu

PHP да ООПда хоссаларни ёзишда сеҳр

Магик метод __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 ни чиқаради ?>

Албатта, хар кимга хусусий хоссаларга ёзишга рухсат бериш керак эмас, акс ҳолда у хусусий хоссаларнинг мақсади йўқолади (уларни оммавий қилиб қўйиш осонроқ).

Шу сабабли бу метод фақат ҳақиқатдан зарурат бўлгандагина қўлланилиши керак. Кейинги дарсларда биз яна муваффақиятли қўллаш мисолларини кўриб чиқамиз.

Ўзбек
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
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш