⊗ppOpMgSP 91 of 107 menu

Snimanje svojstava kroz magiju u OOP u PHP

Magična metoda __set se poziva prilikom pokušaja promene vrednosti nepostojećeg ili skrivenog svojstva. Kao parametre prihvata ime svojstva i vrednost koju mužemo pokušavamo da mu dodelimo.

Pogledajmo na praktičnom primeru. Neka nam je dat ovakva klasa Test:

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

Hajde da napravimo u ovoj klasi magičnu metodu __set, koja će pomoću funkcije var_dump ispisivati ime svojstva, na koje je došlo pozivanje, i vrednost, koju tom svojstvu pokušavamo da postavimo:

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

Proverimo rad naše klase:

<?php $test = new Test; $test->prop = 'vrednost'; // var_dump metode __set će ispisati 'prop vrednost' ?>

Hajde sada da postavljamo vrednost svojstvu čije je ime sačuvano u promenljivoj $property:

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

Sada ćemo moći da upisujemo u privatna svojstva spolja iz klase:

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

Upisivati možemo, međutim, proveriti da li je nešto upisano tamo - ne možemo, jer su svojstva privatna.

Možemo napraviti geter za ova svojstva ili jednostavno iskoristiti magičnu metodu __get. Iskoristićemo drugu opciju:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; } // Magični geter svojstava: public function __get($property) { return $this->$property; } } ?>

E sad možemo da proverimo rad naše klase. Proverimo:

<?php $test = new Test; $test->prop1 = 1; // upisaćemo 1 $test->prop2 = 2; // upisaćemo 2 echo $test->prop1; // ispisaće 1 echo $test->prop2; // ispisaće 2 ?>

Zapravo, naravno, ne treba dozvoljavati svakome da upisuje u privatna svojstva, inače nestaje suština tih privatnih svojstava (lakše je učiniti ih javnim i to je sve).

Stoga ovu metodu treba primenjivati samo kada zaista postoji potreba. U narednim lekcijama ćemo još razmotriti primere uspešne primene.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij