⊗ppOpMgSP 91 of 107 menu

Omaduste määramine magia abil OOP-s PHP-s

Magic meetod __set kutsutakse välja kui proovida muuta olematu või peidetud omaduse väärtust. Parameetritena võtab ta vastu omaduse nime ja väärtuse, mida talle üritatakse omistada.

Vaatame praktilisel näitel. Olgu meil antud selline klass Test:

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

Teeme selles klassis magic meetodi __set, mis funktsiooni var_dump abil kuvab omaduse nime, millele juurdepääs toimus, ja väärtuse, millele seda omadust üritatakse määrata:

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

Kontrollime meie klassi tööd:

<?php $test = new Test; $test->prop = 'value'; // __set meetodi var_dump kuvab 'prop value' ?>

Hakkame nüüd määrama väärtust omadusele, mille nimi on salvestatud muutujas $property:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; // määrame väärtuse } } ?>

Nüüd saame kirjutada privaatsetesse omadustesse klassist väljaspool:

<?php $test = new Test; $test->prop1 = 1; // kirjutame 1 $test->prop2 = 2; // kirjutame 2 ?>

Kirjutada saame küll, aga kontrollida, kas sinna midagi kirjutati - ei saa, kuna omadused on privaatsed.

Saame teha getteri nende omaduste jaoks või lihtsalt kasutada magic meetodit __get. Kasutame teist võimalust:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; } // Magic getter omaduste jaoks: public function __get($property) { return $this->$property; } } ?>

Nüüd saame kontrollida meie klassi tööd. Kontrollime:

<?php $test = new Test; $test->prop1 = 1; // kirjutame 1 $test->prop2 = 2; // kirjutame 2 echo $test->prop1; // kuvab 1 echo $test->prop2; // kuvab 2 ?>

Tegelikult ei peaks muidugi lubama kõigil kirjutada privaatsetesse omadustesse, muidu kaotab nende privaatsete omaduste mõte ära (lihtsam on teha need avalikuks ja kõik).

Seetõttu tuleks seda meetodit rakendada ainult siis, kui sellel on tõesti vajadus. Järgmistes õppetükides me vaatame veel näiteid õnnestunud rakendamisest.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu