Заменить объекты другими объектами на месте - PullRequest
2 голосов
/ 11 мая 2011

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

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

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

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

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

1 Ответ

2 голосов
/ 11 мая 2011

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

...