⊗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ščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј