⊗ppOpMgSP 91 of 107 menu

Zapis lastnosti prek magije v OOP v PHP

Magična metoda __set se pokliče pri poskusu spreminjanja vrednosti neobstoječe ali skrite lastnosti. Kot parametre sprejme ime lastnosti in vrednost, ki jo ji poskušajo dodeliti.

Poglejmo si na praktičnem primeru. Recimo, da imamo podan razred Test:

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

Naredimo v tem razredu magično metodo __set, ki bo s pomočjo funkcije var_dump izpisala ime lastnosti, na katero je prišlo do dostopa, in vrednost, ki jo tej lastnosti poskušajo nastaviti:

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

Preverimo delovanje našega razreda:

<?php $test = new Test; $test->prop = 'value'; // var_dump metode __set bo izpisal 'prop value' ?>

Poskusimo sedaj nastaviti vrednost lastnosti, katere ime je shranjeno v spremenljivki $property:

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

Sedaj lahko zunaj razreda pišemo v zasebne lastnosti:

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

Zapisati lahko, vendar preveriti, ali se je kaj zapisalo - ne moremo, saj so lastnosti zasebne.

Lahko naredimo getter za te lastnosti ali preprosto uporabimo magično metodo __get. Uporabimo drugo možnost:

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

Sedaj lahko preverimo delovanje našega razreda. Preverimo:

<?php $test = new Test; $test->prop1 = 1; // zapišemo 1 $test->prop2 = 2; // zapišemo 2 echo $test->prop1; // izpiše 1 echo $test->prop2; // izpiše 2 ?>

Seveda v resnici ni priporočljivo dovoliti vsem, da pišejo v zasebne lastnosti, sicer izgubi smisel sama pointa teh zasebnih lastnosti (lažje jih je narediti javne in to je to).

Zato je to metodo smiselno uporabljati samo takrat, ko to resnično potrebujemo. V naslednjih lekcijah si bomo ogledali še primere uspešne uporabe.

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
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni