1

Symfony アプリにサービスがあり、コントローラーから関数で使用できることがわかっています$this->get('MyService'); が、コントローラーの外部のスクリプトからはどのように呼び出す必要がありますか?

4

1 に答える 1

1

バンドルのサービス構成で、outside-controller クラスをサービスとして登録する必要があります (ここでは yml 構成を想定しています)。

services:
    your_service_name:
        class:     Your/NonController/Class
        arguments: ['@service_you_want_to_inject']

注入されたサービスを使用するクラスで:

// Your/NonController/Class.php
protected $myService;

// your 'service_you_want_to_inject' will be injected here automatically
public function __construct($my_service)
{
    $this->myService = $my_service;
}

依存性注入が発生するには、このクラスをサービスとして実際に使用する必要があることに注意してください。そうしないと、注入は自動的に行われません。

通常どおり、新しく作成したサービスをコントローラーで取得できます。

// 'service_you_want_to_inject' will be automatically injected in the constructor
$this->get('your_service_name');      

セッター注入とプロパティ注入もありますが、それはこの質問の範囲外です... symfony ドキュメントのサービスコンテナの章で DI の詳細を読んでください。

于 2013-05-26T12:05:21.497 に答える