Dependency Injection and ServiceManager

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Dependency Injection and ServiceManager

Axel
Hi Everybody,

maybe I'm the only one, but I'd like to get some ideas from your side
about the service manager integartion for Zend\Di.
At the moment, when I use
$serviceManager->get('di')->newInstance('some\Class'), it will
completely ignore the services I configured in the service manager. It
would be very useful if it would respect the configured services.

Example:

In the service manager, there is a service called "Zend\Db\Adapter\Adapter".
In the DI config there is a type preference for
Zend\Db\Adapter\AdapterInterface to Zend\Db\Adapter\Adapter.

When I fetch an instance via the absract di service factory tha adapter
from the service manager, the service is injected. When i need to fetch
a new instance explicitly via newInstance() it is ignored.

For my projects I created a custom Di\InstanceManager which will check
the service manager first (excluding abstract factories). This saves me
from creating a lot of weired (and imho unneccessary) factories and
$serviceManager->get('di')->newInstance('some\Class'); is always aware
of the configured services.

Is there anyone who would appreciate this behavior in ZF2 mvc as well?