Задать вопрос
Terion
@Terion

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

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


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

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


Существует ли какой-то хитрый способ перегрузить доступные свойства?
  • Вопрос задан
  • 2531 просмотр
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@Bruteo
Можно хранить данные не как отдельные свойства, а как элементы специального свойства-массива. И __get() будет работать с этим массивом.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AterCattus
@AterCattus
Люблю быстрый backend
Можно свойства реализовать как замыкание, возвращающее нужную инстанцию. Всякие DI так реализуют хранение сервисов.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽