0

When registering a service in module.config.php like

'service_manager' => [
    'factories' => [
        \Path\To\Your\Service\AService => \Path\To\Your\Service\Factory\AServiceFactory,
    ]
]

I can't pass in creation options when calling the service factory neither in ZF2 (when the factory implements MutableCreationOptionsInterface) nor in ZF3 (via $container->get(\Path\To\Your\Service\AService::class, $options).

Could anyone tell me how to pass the creation options to the services?

Dima Dz
  • 512
  • 1
  • 5
  • 17

1 Answers1

1

MutableOptions is currently only available on plugin manager instances; the service manager does not implement it. This is why you see the discrepancy.

Références : https://github.com/zendframework/zend-servicemanager/issues/7

Sample : https://samsonasik.wordpress.com/2014/08/14/zend-framework-2-using-creationoptions-in-pluginmanager/

COMPLEMENT

My solution is to add a method with a fluent pattern to the AService class :

class AService
{
    public function __construct(...)
    {
        //your code, you can inject variables from $container by AServiceFactory
    }
    public function setOptions($options)
    {
        // your setting from $options
        ...
        // fluent pattern
        return $this; 
    }
}

To use your service :

$container->get(\Path\To\Your\Service\Aservice::class)->setOptions($options);
Alain Pomirol
  • 828
  • 7
  • 14