⊗ppOpMgGP 88 of 107 menu

Dobijanje osobina kroz magiju u OOP-u u PHP-u

Sledeća magična metoda koju ćemo razmotriti zove se __get. Ova metoda se aktivira prilikom pokušaja čitanja vrednosti privatne ili zaštićene osobine.

Ako se implementira metoda __get u nekoj klasi, onda će svi pristupi nepostojećim ili skrivenim osobinama biti obrađeni tom metodom.

Prilikom toga, PHP će automatski proslediti ime tražene osobine u prvi parametar ove metode, a vrednost koju vrati ova metoda biće shvaćena kao vrednost osobine kojoj je pristupljeno.

Verovatno za sada nije baš jasno, kako ovo funkcioniše, zato da pogledamo praktičan primer. Neka postoji ovakva klasa Test sa privatnom i javnom osobinom:

<?php class Test { public $prop1 = 1; // javna osobina private $prop2 = 2; // privatna osobina } ?>

Dodajmo našoj klasi magičnu metodu __get, koja će za početak jednostavno vraćati ime osobine kojoj je pristupljeno:

<?php class Test { public $prop1 = 1; private $prop2 = 2; public function __get($property) { return $property; // jednostavno vratimo ime osobine } } ?>

Proverimo rad kreirane magične metode. Pristupimo trima tipovima osobina: javnoj osobini, privatnoj i nepostojećoj:

<?php $test = new Test; // Pristupamo javnoj osobini: echo $test->prop1; // ispisaće 1 - odnosno vrednost osobine // Pristupamo privatnoj osobini: echo $test->prop2; // ispisaće 'prop2' - ime osobine // Pristupamo nepostojećoj osobini: echo $test->prop3; // ispisaće 'prop3' - ime osobine ?>

Kao što vidite, naša magična metoda reaguje na pristup privatnim i nepostojećim osobinama, ali ignoriše pristup javnim - one rade kao što su i ranje radile.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij