Terion
@Terion

Можно ли перегрузить публичные (или доступные) свойства объекта?

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


Всё хорошо, но хочется сделать это «лениво», т.е. чтобы свойства превращались в объекты только тогда, когда к ним пытаются обратиться.

Для обращений извне это реализовывается легко, магическим методом __get(). Но он не будет работать при обращении к этим свойствам «изнутри» (т.е. $this->protected_property), потому что изнутри эти свойства доступны.


Существует ли какой-то хитрый способ перегрузить доступные свойства?
  • Вопрос задан
  • 2530 просмотров
Решения вопроса 1
@Bruteo
Можно хранить данные не как отдельные свойства, а как элементы специального свойства-массива. И __get() будет работать с этим массивом.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AterCattus
@AterCattus
Люблю быстрый backend
Можно свойства реализовать как замыкание, возвращающее нужную инстанцию. Всякие DI так реализуют хранение сервисов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы