Суть в следующем: есть доменный объект, допустим User, у него есть private свойство images должно содержать в себе коллекцию изображений, устанавливается через сеттер set_images(ImagesCollection $images)
Так вот, нужно реализовать ленивую загрузку. На данный момент есть некий класс Lazy интерфейс оного подразумевает только один метод load. Таким образом когда вызывается метод $user->images();
подгружается нужная коллекция объектов и все готово. Но как мне устанавливать этот самый Lazy в private свойство images тут либо писать отдельный сеттер по типу set_images_lazy(Lazy $lazy)
либо добавить общее для всех объектов DomainObject свойство Lazy, которое будет массивом хранящим имя свойства в виде ключа и значение - экземпляр lazy. Как стоит поступить? Или возможно есть более кашерное решение?
Спасибо за линк, в итоге сделал следующим образом: унаследовал от класса ImageCollection класс ImageCollectionProxy который принимает собственно объект Lazy и по требованию предоставляет ImageCollection в доменном объекте остается только проверить instanceof и если проходит, то вызвать метод load() объекта ImageCollectionProxy.