Alejandro Celaya has a recent post to his site showing you how you can delay constructor execution in your services by making use of the "lazy services" functionality provided by the Zend ServiceManager
component.
A couple years ago I wrote a post about how to improve PHP applications performance by using zend-servicemanager lazy services.In that article I explained how the ServiceManager takes advantage of the proxy design pattern to delay the creation of services, when they are marked as lazy.
That can improve performance if the object is resource consuming, but that is not the only advantage behind proxies.
He starts with a use case for using these "lazy services" based on some changes in an open source library he maintains to add in geolocation support. The library requires a database file when the object is created but on the first run, no file is downloaded yet. He made use of the lazy service loading to only initialize the GeoIp2
library when it is requested and not when the script starts.