Волшебный метод в PHP для запуска метода, когда объявленное свойство установлено? - PullRequest
0 голосов
/ 02 января 2012

У меня есть класс с объявленными свойствами.Весь смысл этого класса и его расширений в том, что мне нужно, чтобы они всегда были доступны, даже если он нулевой, для другого объекта.Так это выглядит так:

class Wrapper {

     public $a = "";
     public $b = "";
     public $c = "";

    public function Wrapper() {

        $this -> wrapped = new Wrapped();

        foreach($this as $key => $val) {
              if($key != 'wrapped') {
                 $this -> wrapped -> $key = $val;
              }
        }

    }
}

Но после создания экземпляра объекта я хочу иметь возможность перезаписывать объявленные значения напрямую, поэтому:

 $wrap_test = new Wrapper();
 $wrap_test -> a = 12;

Вместо написания метода илииспользуя $wrap_test -> wrapped -> a -> 12, я искал эквивалент __set (), который вызывал бы метод всякий раз, когда установлено какое-либо свойство.

Существует ли это?

1 Ответ

2 голосов
/ 02 января 2012

Если ваши свойства объявлены public, нет никакого «события» или другого метода, к которому вы можете подключиться.Свойства могут быть просто изменены кем-либо напрямую.

Объявите ваши свойства как protected или private, чтобы их нельзя было изменить непосредственно вне класса, затем реализуйте методы __get и __set, чтобыВы можете получить доступ к свойствам, как если бы они были public.В методе __set делайте все, что вам нужно, при изменении свойства.

...