Рейтинг@Mail.ru

Журнал "Код моё имя" » Статьи блога » Статьи

Спецмет

(2 сообщения)
  1. admin
    Хранитель

    В данной статье я хочу расказать об очень интересной и полезной вещи введённой разработчиками 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
    class x{
       public $cc;
       public function __set($name,$arg){
         print("Вы попытались присвоить значение $val переменной $name");
    // тут же вы можете описать что де

    __call() – вызывается при попытке вызвать недоступный или несуществующий метод

    1
    2
    3
    4
    5
    6
    7
    8
    class x {
      public function __call($name,$arguments) {
        print("вызван метод  $name!");
      }
    }
    $x = new x();
    $x->doStuff();
    $x->fan

    __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("объекты то
    Отправлено 2 года назад #
  2. fuzaylov
    Неактивен

    Опубликовано незарегистрированным пользователем: fuzaylov (E-mail, Адрес)

    Кстати недавно познакомился с методом __call()! Очень удобная!

    Отправлено 1 год назад #

  3. RSS экспорт этой темы

    Отправить сообщение

    Вы должны войти в систему, чтобы оставлять сообщения.