ZF3 Внедрить часть глобальной конфигурации в сервисную фабрику

У меня есть служба, определенная в Module.phpгде я вкалываю mail конфиг, определенный в config/autoload/global.php сюда:

public function getConfig()
{
    return include __DIR__ . '/../config/module.config.php';
}

public function getServiceConfig()
{
    return [
        'factories' => [
            'Mailer' => function($container) {
                return new MailService($this->getConfig()['mail']);
            },

        ]
    ];
}

Но я хочу сделать это способом ZF3 (который я изучаю, поэтому я определил свой сервис в моем module.config.php сюда:

return [
    'services' => [
        'factories' => [
            Service\MailService::class => MailServiceFactory::class
        ]
    ],

И мой MailServiceFactory.php является:

class MailServiceFactory implements FactoryInterface
{
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
    {
        return new MailService();
    }
}

Но как я могу получить свой конфиг, определенный в global.php и залить его на заводе, нужен мой сервис?

1 ответ

Решение

ОК, после некоторой отладки и var_dump(), У меня есть это. Я могу получить доступ к массиву конфигурации благодаря $container->get('configuration'), Итак, моя фабрика сейчас:

class MailServiceFactory implements FactoryInterface
{
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
    {
        $config = $container->get('configuration');
        return new MailService($config['mail']);
    }
}
Другие вопросы по тегам