⊗ppOpMgSP 91 of 107 menu

Запишување на својства преку магија во ООП во PHP

Магичниот метод __set се повикува при обид за промена на вредноста на непостоечко или скриено својство. Како параметри ги прифаќа името на својството и вредноста која се обидуваат да му ја доделат.

Да го погледнеме практичниот пример. Нека ни е дадена класата Test:

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

Да направиме во оваа класа магичен метод __set, кој со помош на функцијата var_dump ќе го прикаже името на својството, до кое се направил пристап, и вредноста, која се обидуваат да му ја поставят на ова својство:

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

Да ја провериме работата на нашата класа:

<?php $test = new Test; $test->prop = 'value'; // var_dump на методот __set ќе испечати 'prop value' ?>

Сега да почнеме да поставуваме вредност на својство чие име е зачувано во променливата $property:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; // ја поставуваме вредноста } } ?>

Сега можеме да запишуваме во приватни својства надвор од класата:

<?php $test = new Test; $test->prop1 = 1; // ќе запишеме 1 $test->prop2 = 2; // ќе запишеме 2 ?>

Можеме да запишуваме, сепак, да провериме дали нешто е запишано таму - не, бидејќи својствата се приватни.

Може да се направи getter за овие својства или едноставно да се искористи магичниот метод __get. Да го искористиме вториот вариант:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; } // Магичен getter за својства: public function __get($property) { return $this->$property; } } ?>

Сега веќе можеме да ја провериме работата на нашата класа. Да провериме:

<?php $test = new Test; $test->prop1 = 1; // ќе запишеме 1 $test->prop2 = 2; // ќе запишеме 2 echo $test->prop1; // ќе испечати 1 echo $test->prop2; // ќе испечати 2 ?>

Всушност, се разбира, не треба да се дозволи на сите произволно да запишуваат во приватни својства, инаку целата поента на тие приватни својства се губи (полесно е да се направат јавни и толку).

Затоа овој метод треба да се применува само тогаш кога навистина постои потреба за тоа. Во следните лекции уште ќе разгледаме примери на успешна примена.

Македонски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј