⊗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 ?>

Можем да записваме, но да проверим дали нещо е записано - не, тъй като свойствата са частни.

Може да се направи гетър за тези свойства или просто да се използва магически метод __get. Ще използваме втория вариант:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; } // Магически гетър за свойства: 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šuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне