2017-02-25 3 views
1

私のすべてのコマンドを取得する方法を知りたいのですが、Symfonyのサービスはコンパイラに渡されますか?SymfonyのCLIコマンドとコンパイラのパス

実装されたインターフェイスによってサービスを見つける手段はありますか?または、おそらく私はそれらすべてをタグ付けする必要がありますか?

ありがとう、 KL。

+0

これは役立つかもしれません:https://www.tomasvotruba.cz/blog/2017/02/12/drop-all-service-tags-in-your-nette-and -symfony-applications / – Cerad

答えて

0

すべてにタグを付ける必要があります。期待されるクラス/インタフェースのインスタンスであるサービスを捜す方法はありません。

とにかく、すべてを取得し、繰り返し処理し、インターフェイスを拡張するものだけをフィルタリングすることができます。しかし、それははるかに遅く、それを行う最もひどい方法です。

0

私はあなたが正しく質問してくれることを願っています。あなたは、あなたのアプリケーションで定義されたすべてのコマンドを取得しようとしている場合:

$kernel = $this->container->get('kernel'); 
    $application = new Application($kernel); 
    $commands = $application->all('doctrine'); 
    var_dump($commands);die; 

この例を新鮮なsymfonyであなたはすべての教義のコマンドをフェッチすることができますインストールします。あなたのコマンドプレフィックスで 'doctrine'を置き換えてください。

\ symfony \ Bundle \ FrameworkBundle \ Console \ Application(特にregisterCommandsメソッド)を見てください。私は最新バージョンのSymfonyを使用しています。3.2.4

関連する問題