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