Когда использовать __get __set?
Подскажите пожалуйста, когда нужно использовать магические методы __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;
Ответы (2 шт):
Геттеры и сеттеры используются для контроля доступа к приватным данным. Это методы-посредники, определяющие можно или нет делать с теми или иными данными объекта извне и по каким правилам.
Get и set методы в PHP и ООП позволяют обеспечить контроль доступа к свойствам объекта и предотвратить изменения свойств в неправильном контексте или с неправильными значениями. Это также может упростить понимание и сопровождение кода, позволяя изменять реализацию свойств без необходимости изменять все места, где они используются.
В вашем примере, использование геттеров и сеттеров может быть излишним, если свойства класса не нуждаются в дополнительной обработке или контроле доступа. Однако, если в будущем возникнет необходимость добавить такой контроль или обработку, использование геттеров и сеттеров упростит эту задачу. Поэтому их стоит реализовывать в заранее если такое предвидится.
Также хочу отметить, что методы get и set обычно реализуют отдельно для каждого поля, чтобы не создавать путаницы.