0

で定義されたサービスがあり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しかし、サービスで必要な、で定義された構成を取得してファクトリに注入するにはどうすればよいですか?

4

1 に答える 1

1

OK、いくつかのデバッグと の後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']);
    }
}
于 2016-09-03T21:44:37.827 に答える