⊗ppOpMgSP 91 of 107 menu

Zápis vlastností pomocou kúzel v OOP v PHP

Kúzelná metóda __set sa volá pri pokuse o zmenu hodnoty neexistujúcej alebo skrytej vlastnosti. Ako parametre prijíma názov vlastnosti a hodnotu, ktorú sa jej pokúšajú priradiť.

Pozrime sa na praktický príklad. Majme danú takúto triedu Test:

<?php class Test { private $prop1; private $prop2; } ?>

Vytvorme v tejto triede kúzelnú metódu __set, ktorá pomocou funkcie var_dump vypíše názov vlastnosti, ku ktorej došlo k prístupu, a hodnotu, ktorú sa tejto vlastnosti pokúšajú nastaviť:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { var_dump($property . ' ' .$value); } } ?>

Otestujme fungovanie našej triedy:

<?php $test = new Test; $test->prop = 'value'; // var_dump metódy __set vypíše 'prop value' ?>

Skúsme teraz nastaviť hodnotu vlastnosti, ktorej názov je uložený v premennej $property:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; // nastavíme hodnotu } } ?>

Teraz môžeme zapisovať do privátnych vlastností zvonku triedy:

<?php $test = new Test; $test->prop1 = 1; // zapíšeme 1 $test->prop2 = 2; // zapíšeme 2 ?>

Zapisovať môžeme, avšak skontrolovať, či sa tam niečo zapisalo - nie, pretože vlastnosti sú privátne.

Môžeme vytvoriť getter pre tieto vlastnosti alebo jednoducho použiť kúzelnú metódu __get. Využime druhú možnosť:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; } // Kúzelný getter vlastností: public function __get($property) { return $this->$property; } } ?>

Až teraz môžeme skontrolovať fungovanie našej triedy. Skontrolujme:

<?php $test = new Test; $test->prop1 = 1; // zapíšeme 1 $test->prop2 = 2; // zapíšeme 2 echo $test->prop1; // vypíše 1 echo $test->prop2; // vypíše 2 ?>

Samozrejme, v skutočnosti by sme nemali dovoliť komukoľvek zapisovať do privátnych vlastností, inak stráca zmysel ich súkromný charakter (jednoduchšie je urobiť ich verejnými a hotovo).

Preto by sa táto metóda mala používať iba vtedy, keď je to naozaj potrebné. V nasledujúcich lekciách si ešte rozoberieme príklady úspešného použitia.

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ť