Спецметоды 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("объекты то разные!");



Рекомендуем почитать

 

Добавить комментарий


Ваше имя:


Комментарий:


Введите: Картинка