⊗ppOpMgSP 91 of 107 menu

Savybių priskyrimas naudojant magiją OOP PHP

Magiškas metodas __set iškviečiamas kai bandoma pakeisti neegzistuojančios ar paslėptos savybės reikšmę. Kaip parametrus jis priima savybės pavadinimą ir reikšmę, kurią jai bando priskirti.

Pažiūrėkime į praktinį pavyzdį. Tarkime, kad turime šią Test klasę:

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

Sukurkime šioje klasėje magišką metodą __set, kuris naudodamas funkciją var_dump išves savybės pavadinimą, prie kurios buvo kreiptasi, ir reikšmę, kurią tai savybei bando nustatyti:

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

Patikrinkime mūsų klasės veikimą:

<?php $test = new Test; $test->prop = 'value'; // __set metodo var_dump išves 'prop value' ?>

Dabar bandykime nustatyti reikšmę savybei, kurios pavadinimas saugomas kintamajame $property:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; // nustatome reikšmę } } ?>

Dabar mes galėsime įrašyti į privačias savybes iš klasės išorės:

<?php $test = new Test; $test->prop1 = 1; // įrašysime 1 $test->prop2 = 2; // įrašysime 2 ?>

Rašyti mes galime, tačiau patikrinti, ar ten kas nors įrašyta - ne, nes savybės yra privatūs.

Galima sukurti getter'į šioms savybėms arba tiesiog panaudoti magišką metodą __get. Pasinaudokime antruoju variantu:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; } // Magiškas savybių getter'is: public function __get($property) { return $this->$property; } } ?>

Dabar jau galime patikrinti mūsų klasės veikimą. Patikrinkime:

<?php $test = new Test; $test->prop1 = 1; // įrašysime 1 $test->prop2 = 2; // įrašysime 2 echo $test->prop1; // išves 1 echo $test->prop2; // išves 2 ?>

Tiesą sakant, žinoma, nereikėtų leisti visiems rašyti į privačias savybes, kitaip prarandama tų privačių savybių prasmė (lengviau padaryti jas viešomis ir viskas).

Taigi šis metodas turėtų būti taikomas tik tada, kai tam tikrai yra poreikis. Kitiose pamokose mes dar apsvarstysime pavyzdžius sėkmingo pritaikymo.

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