⊗ppOpMgGP 88 of 107 menu

Získavanie vlastností pomocou magie v OOP v PHP

Ďalšia magická metóda, ktorú si rozoberieme, sa volá __get. Táto metóda sa aktivuje pri pokuse o čítanie hodnoty súkromnej alebo chránenej vlastnosti.

Ak implementujete metódu __get v nejakej triede, všetky prístupy k neexistujúcim alebo skrytým vlastnostiam budú spracované touto metódou.

PHP automaticky prenesie názov požadovanej vlastnosti do prvého parametra tejto metódy a vrátená hodnota tejto metódy bude považovaná za hodnotu vlastnosti, ku ktorej došlo k prístupu.

Pravdepodobne zatiaľ nie je veľmi jasné, ako to funguje, tak sa pozrime na praktický príklad. Majme nasledujúcu triedu Test so súkromnou a verejnou vlastnosťou:

<?php class Test { public $prop1 = 1; // verejná vlastnosť private $prop2 = 2; // súkromná vlastnosť } ?>

Pridajme do našej triedy magickú metódu __get, ktorá na začiatok bude jednoducho vracať názov vlastnosti, ku ktorej došlo k prístupu:

<?php class Test { public $prop1 = 1; private $prop2 = 2; public function __get($property) { return $property; // jednoducho vráťme názov vlastnosti } } ?>

Overme si fungovanie vytvorenej magickej metódy. Pristúpme k trom typom vlastností: k verejnej vlastnosti, k súkromnej a k neexistujúcej:

<?php $test = new Test; // Pristupujeme k verejnej vlastnosti: echo $test->prop1; // vypíše 1 - teda hodnotu vlastnosti // Pristupujeme k súkromnej vlastnosti: echo $test->prop2; // vypíše 'prop2' - názov vlastnosti // Pristupujeme k neexistujúcej vlastnosti: echo $test->prop3; // vypíše 'prop3' - názov vlastnosti ?>

Ako vidíte, naša magická metóda reaguje na prístup k súkromným a neexistujúcim vlastnostiam, ale ignoruje prístup k verejným - tie fungujú tak, ako fungovali predtým.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť