Когда использовать __get __set?

Рейтинг: 0Ответов: 2Опубликовано: 12.02.2023

Подскажите пожалуйста, когда нужно использовать магические методы __get, __set?

class Test{
   private $a = 1;

   function __get($key) {
      return $this->$key;
   }

   function __set($key, $val) {
      $this->$key = $val;
   }
}
$a = new Test;
$a->a = 2;
echo $a->a;

Вот зачем этот геморой, если можно вот так?

class Test {
   public $a = 1;
}
$a = new Test;
$a->a = 2;
echo $a->a;

Ответы

▲ 1

Get и set методы в PHP и ООП позволяют обеспечить контроль доступа к свойствам объекта и предотвратить изменения свойств в неправильном контексте или с неправильными значениями. Это также может упростить понимание и сопровождение кода, позволяя изменять реализацию свойств без необходимости изменять все места, где они используются.

В вашем примере, использование геттеров и сеттеров может быть излишним, если свойства класса не нуждаются в дополнительной обработке или контроле доступа. Однако, если в будущем возникнет необходимость добавить такой контроль или обработку, использование геттеров и сеттеров упростит эту задачу. Поэтому их стоит реализовывать в заранее если такое предвидится.

Также хочу отметить, что методы get и set обычно реализуют отдельно для каждого поля, чтобы не создавать путаницы.

▲ 0

Геттеры и сеттеры используются для контроля доступа к приватным данным. Это методы-посредники, определяющие можно или нет делать с теми или иными данными объекта извне и по каким правилам.