Перехват обращение к свойству объекта? Есть ли возможность в php перехватить обращение к свойству?
Допусти у объекта data есть свойство param, по умолчанию оно пустое, при первом обращении к param что бы можно было выполнить опр. метод для его заполнения и в дальнейшем если не пустое то не вызывать метод заполнения.

21 Авг 2019 в 07:04
227 +1
0
Ответы
1

Да, в PHP существует магический метод __get(), который позволяет перехватить обращение к несуществующему или защищенному свойству объекта.

Пример:

class Data {
private $param = '';
public function __get($name) {
if ($name == 'param') {
if ($this->param == '') {
$this->param = $this->initializeParam();
}
return $this->param;
}
}
private function initializeParam() {
// логика инициализации свойства param
return 'initialized value';
}
}
$data = new Data();
echo $data->param; // инициализируется свойство param и выводится 'initialized value'
echo $data->param; // не инициализируется повторно, выводится 'initialized value'

Таким образом, при обращении к свойству param будет вызываться метод initializeParam() только при первом обращении, далее значение будет возвращаться напрямую.

20 Апр 2024 в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир