Магические методы __set и __get в php.

image

09.06.13
Comments 0

В этой статье я попытаюсь объяснить для чего нужны магические методы __get и __set в PHP. Иногда бывает нужно перехватить необъявленные или недоступные в классе свойства для того чтобы выполнять какие либо действия при обращинии к ним из объекта.

Метод  __set служит для присвоения значения объекту, который обращается к недоступным свойствам, при этом значения помещаются в массив $this->arr. Метод  __get не присваивает никаких значений, он всего лишь помогает отобразить значение метода при обращении к недоступному свойству.

Ниже приведен код, в котором все наглядно показано:

class my
{
    private $arr=array();
 
    public function __get($index)
    {
    return $this->arr[$index] . ' тест';  // При обращении присоединяем к значению строку со значением ' тест'.
    }
      
    public function __set($index, $value)
    {
        $this->arr[$index] = $value * 2; // При обращении присваиваем значение объекта умноженное на 2
    }
}

$obj = new my;
$obj->nf=2;    
echo $obj->nf;     

image

Комментировать