Terion
@Terion

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

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


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

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


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

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

Войти через центр авторизации
Похожие вопросы