4

これに利点があるかどうかはわかりません。未使用のサービスをサービス コンテナーから削除する必要がありますか?

たとえば、私のバンドル構成では、langオプション プロバイダーの使用を無効にすることができます。

my_bundle:
    providers:
        lang:
            enabled: false

langプロバイダーが有効になっている場合は、providerタグを追加する必要があります。このサービスはservices.xmlファイルで定義され、拡張子を介してロードされます。

<service id="my_bundle.provider.lang" class="My\Provider\LangOptionsProvider">

では、この定義を削除するのは良い考えであり、その理由は何ですか?

public function load(array $configs, ContainerBuilder $container)
{
    // ...

    $loader->load('services.xml'); // Loads "my_bundle.provider.lang"

    if($config['providers']['lang']['enabled']) {
        // lang provider is enabled, add the tag
        $container->getDefinition('my_bundle.provider.lang')->addTag('provider');
    }
    else { // Is this really needed?
        // Remove lang provider definition (or just the tag?!)
        $container->removeDefinition('my_bundle.provider.lang');
    }
}
4

1 に答える 1

4

サービスが要求されたときにインスタンス化が発生するため、オーバーヘッドは最小限に抑えられます。したがって、サービスを削除するかどうかは関係ありません。

コンテナからmy_mailerサービスを要求すると、コンテナはオブジェクトを作成して返します。これは、サービスコンテナを使用するもう1つの大きな利点です。つまり、サービスは必要になるまで構築されません。サービスを定義し、それをリクエストで使用しない場合、サービスは作成されません。これにより、メモリが節約され、アプリケーションの速度が向上します。これは、多くのサービスを定義するためのパフォーマンスへの影響がほとんどないか、まったくないことも意味します。使用されないサービスは構築されません。

http://symfony.com/doc/current/book/service_container.html

于 2013-01-04T22:24:18.220 に答える