Методы перехватчики | Interception methods

Методы перехватчики - это встроенные методы которые могут перехватывать сообщения посланные неопределённым (т.е. несуществующим) методам или свойствам.

  • __get($property) вызывается при обращении к неопределенному свойству.
  • __set($property, $value) вызывается, когда неопределенному свойству присваивается значение.
  • __isset($property) вызывается, когда функция isset() вызывается для неопределенного свойства.
  • __unset($property) вызывается, когда функция unset() вызывается для неопределенного свойства.
  • __call($method, $arg_array) вызывается при обращении к неопределенному методу.
  • __callStatic($method, $arg_array) вызывается при обращении к неопределенному статическому методу.
class Person
{
    function __get( $property ){
        $method = "get{$property}";
        if ( method_exists( $this, $method ) ){
            return $this->$method();
        }
    }

    function getName(){
        return "User";
    }

    function getAge(){
        return 44;
    }
}
$p = new Person();
print p->name;// User
print p->color;// NULL

Методы __call($method, $arg_array) и __callStatic($method, $arg_array) - можно использовать для делегирования, т.е. вызова методов одного объекта через другого.