Symfony CLI 命令和编译器传递

Symfony CLI commands and Compiler pass

我只想知道如何将我的所有命令 Symfony 服务放入我的编译器传递中?

是否有通过实现的接口查找服务的方法?或者我必须全部标记它们?

谢谢, 吉隆坡

你应该把它们都标记出来。无法检索作为某些预期 class/interface.

实例的服务

无论如何,您可以获取所有内容,遍历它们,并仅过滤那些扩展您的界面的内容。但它要慢得多,而且是最糟糕的方式。

希望我理解正确。如果您尝试获取应用程序中定义的所有命令,则:

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

此示例使用全新安装的 symfony,您可以获取所有 doctrine 命令。只需将 'doctrine' 替换为您的命令前缀即可。

查看 \Symfony\Bundle\FrameworkBundle\Console\Application 尤其是 registerCommands 方法。我正在使用最新版本的 Symfony 3.2.4