Заменить объекты другими объектами на месте

Предположим, я хотел бы создать слой абстракции базы данных, который использует механизм отложенной загрузки.

Если я прошу слой загрузить корневой объект, он загрузит его внешнее представление и создаст сам.

Затем он каким-то образом идентифицирует существование определенных связанных объектов. Поскольку загрузка всех данных может стоить дорого, он установил прокси для связанных объектов. Такие прокси должны быть в состоянии обойтись.

Если первое сообщение вызывается на таком прокси, оно загружает свое внешнее представление и создает себя. Поскольку ссылки на прокси-сервер могли передаваться, созданный объект должен заменить существующий прокси-объект на месте.

Могу ли я заменить на месте объект другим объектом в PHP?

1 ответ

Решение

Я не верю, что объект может заменить все ссылки на себя другим объектом. Вместо этого ваши прокси-объекты передают доступ к свойству и вызов метода с использованием перегрузки. Реализация прокси на базовом прокси-объекте (названном, например, OOProxy), а затем расширить это до LazyProxy класс, который лениво загружает прокси-объект. Пока вам не нужно проверять тип объекта, все, что имеет ссылку на прокси, не сможет отличить его от прокси.

Другие вопросы по тегам