⊗ppOpMgGP 88 of 107 menu

Tulajdonságok elérése mágiával az OOP-ban PHP-ben

A következő mágikus metódus, amit megvizsgálunk, a __get nevet viseli. Ez a metódus akkor aktiválódik, amikor egy privát vagy védett tulajdonság értékét próbáljuk elolvasni.

Ha a __get metódust megvalósítjuk valamilyen osztályban, akkor minden nem létező vagy rejtett tulajdonsághoz való hozzáférést ez a metódus fogja kezelni.

Eközben a PHP automatikusan továbbítja a kért tulajdonság nevét ennek a metódusnak az első paramétereként, és a metódus által visszaadott értéket a tulajdonság értékeként fogja értelmezni, amelyhez a hozzáférés történt.

Valószínűleg még nem teljesen világos, hogy ez hogyan működik, ezért nézzünk egy gyakorlati példát. Tegyük fel, hogy van egy Test osztályunk privát és publikus tulajdonságokkal:

<?php class Test { public $prop1 = 1; // publikus tulajdonság private $prop2 = 2; // privát tulajdonság } ?>

Adjunk hozzá az osztályunkhoz egy mágikus metódust __get, amely kezdetben egyszerűen visszaadja annak a tulajdonságnak a nevét, amelyhez a hozzáférés történt:

<?php class Test { public $prop1 = 1; private $prop2 = 2; public function __get($property) { return $property; // egyszerűen visszaadjuk a tulajdonság nevét } } ?>

Vizsgáljuk meg a létrehozott mágikus metódus működését. Forduljunk három típusú tulajdonsághoz: publikus tulajdonsághoz, priváthoz és nem létezőhöz:

<?php $test = new Test; // Publikus tulajdonsághoz fordulunk: echo $test->prop1; // kiír 1 - azaz a tulajdonság értékét // Privát tulajdonsághoz fordulunk: echo $test->prop2; // kiír 'prop2' - a tulajdonság neve // Nem létező tulajdonsághoz fordulunk: echo $test->prop3; // kiír 'prop3' - a tulajdonság neve ?>

Amint látható, a mágikus metódusunk reagál a privát és nem létező tulajdonságokhoz való hozzáférésre, de figyelmen kívül hagyja a publikusokhoz való hozzáférést - azok továbbra is úgy működnek, ahogy korábban.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás