私のすべてのコマンドを取得する方法を知りたいのですが、Symfonyのサービスはコンパイラに渡されますか?SymfonyのCLIコマンドとコンパイラのパス
実装されたインターフェイスによってサービスを見つける手段はありますか?または、おそらく私はそれらすべてをタグ付けする必要がありますか?
ありがとう、 KL。
私のすべてのコマンドを取得する方法を知りたいのですが、Symfonyのサービスはコンパイラに渡されますか?SymfonyのCLIコマンドとコンパイラのパス
実装されたインターフェイスによってサービスを見つける手段はありますか?または、おそらく私はそれらすべてをタグ付けする必要がありますか?
ありがとう、 KL。
すべてにタグを付ける必要があります。期待されるクラス/インタフェースのインスタンスであるサービスを捜す方法はありません。
とにかく、すべてを取得し、繰り返し処理し、インターフェイスを拡張するものだけをフィルタリングすることができます。しかし、それははるかに遅く、それを行う最もひどい方法です。
私はあなたが正しく質問してくれることを願っています。あなたは、あなたのアプリケーションで定義されたすべてのコマンドを取得しようとしている場合:
$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
これは役立つかもしれません:https://www.tomasvotruba.cz/blog/2017/02/12/drop-all-service-tags-in-your-nette-and -symfony-applications / – Cerad