⊗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çeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне