⊗ppOpMgGP 88 of 107 menu

Savybių gavimas per magiją OOP PHP

Kitas magiškas metodas, kurį nagrinėsime, vadinamas __get. Šis metodas suveikia bandant perskaityti reikšmę iš privacios arba apsaugotos savybės.

Jeigu klasėje realizuotas metodas __get, tai visos kreipimaisi į neegzistuojančias ar paslėptas savybes bus apdorojamos šiuo metodu.

Tuomet PHP automatiškai perduos užklaustos savybės pavadinimą į pirmąjį parametrą šio metodo, o šio metodo grąžinta reikšmė bus priimta kaip savybės, į kurią buvo kreiptasi, reikšmė.

Greičiausiai kol kas nelabai aišku, kaip tai veikia, todėl pažiūrėkime praktiniu pavyzdžiu. Tarkime, kad turime tokią Test klasę su privacia ir vieša savybėmis:

<?php class Test { public $prop1 = 1; // vieša savybė private $prop2 = 2; // privati savybė } ?>

Į savo klasę pridėkime magiškąjį metodą __get, kuris iš pradžių tiesiog grąžins savybės, į kurią buvo kreiptasi, pavadinimą:

<?php class Test { public $prop1 = 1; private $prop2 = 2; public function __get($property) { return $property; // tiesiog grąžinsime savybės pavadinimą } } ?>

Patikrinkime sukurtų magiškųjų metodų veikimą. Kreipkimės į tris savybių tipus: į viešą savybę, į privatų ir į neegzistuojančią:

<?php $test = new Test; // Kreipiamės į viešą savybę: echo $test->prop1; // išves 1 - tai yra savybės reikšmė // Kreipiamės į privatų savybę: echo $test->prop2; // išves 'prop2' - savybės pavadinimas // Kreipiamės į neegzistuojančią savybę: echo $test->prop3; // išves 'prop3' - savybės pavadinimas ?>

Kaip matote, mūsų magiškas metodas reaguoja į kreipimąsi į privacias ir neegzistuojančias savybes, bet ignoruoja kreipimąsi į viešas - jos veikia taip, kaip ir veikė anksčiau.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti