Главная » PHP » Спецметоды PHP
Спецметоды PHP
В данной статье я хочу расказать об очень интересной и полезной вещи введённой разработчиками php в пятой версии.
Это так называемые «спецметоды». Для чего нужны спецметоды в PHP? Ну предположим вам надо задать стандартное значение для не существующего метода B в классе А или же добавить обработчики классов (часто используется в технологии ловушек или «hooks»). В общем по дальнейшему описанию спецметодов вы поймёте их назначение.
Все спецметоды начинаются с двойного подчёркивания «__».
Вот список основных спецметодов:
__get($args) – метод вызывается в случае обращения к несуществующему члену.
1
2 3 4 5 |
class x{
function __get($arg){return 111;} } $x= new x(); echo $x->cc; |
__set() – вызывается при попытке установить или изменить значение
1
2 3 4 5 6 7 8 9 |
class x{
public $cc; public function __set($name,$arg){ print("Вы попытались присвоить значение $val переменной $name"); // тут же вы можете описать что делать пр событии изменения } } $x= new x(); $x->cc='значение'; |
__call() – вызывается при попытке вызвать недоступный или несуществующий метод
1
2 3 4 5 6 7 8 |
class x {
public function __call($name,$arguments) { print("вызван метод $name!"); } } $x = new x(); $x->doStuff(); $x->fancy_stuff(); |
__clone() – служит для клонирования объекта
1
2 3 4 5 6 7 8 9 10 11 12 13 14 |
class x {
public $x; public function sX($x) { $this->x = $x; } public function gX() { return $this->x; } } $o1 = new x; $o1->sX(4); $o2 = $o1->__clone(); $o1->sX(5); if($o1->gX() != $o2->gX()) print("объекты то разные!"); |
Рекомендуем почитать