Hey there!

On 5 February 2014 10:58, Anton Serdyuk <[email protected]> wrote:

> Hi, folks!
>
> There is some problem I can not solve. I have some code which I want to
> wire up with zend-di. There are many classes which have constructor
> parameter lets say UserRepository $userRepository.  UserRepository is an
> interface, and there is DoctrineUserRepository. So I want somehow tell to
> di-container it should use DoctrineUserRepository instead UserRepository
> every time. For example I want sometimes call $di->get('UserRepository') or
> I can make it as constructor parameter to another class - it doesnt matter.
>


That's a fairly common use case: you will need to set a "preference" for
the DI container. Something like following:


        'instance' => array(
            'preference' => array(
                'Zend\EventManager\EventManagerInterface' => 'EventManager',
                'Zend\ServiceManager\ServiceLocatorInterface' =>
'ServiceManager',
            ),
        ),



That will do the trick, and will tell the container to use "EventManager"
(or whatever concrete class name) whenever the interface for it is used.

I think there's also some more about it on
http://ocramius.github.io/blog/zend-framework-2-controllers-and-dependency-injection-with-zend-di/

Cheers,

Marco Pivetta

http://twitter.com/Ocramius

http://ocramius.github.com/

Reply via email to