【发布时间】:2017-07-16 16:23:19
【问题描述】:
我只想知道如何将我的所有命令 Symfony 服务放入我的编译器通道中?
有没有办法通过实现的接口找到服务?还是我必须全部标记?
谢谢, 吉隆坡。
【问题讨论】:
-
这可能会有所帮助:tomasvotruba.cz/blog/2017/02/12/…
标签: php command command-line-interface symfony
我只想知道如何将我的所有命令 Symfony 服务放入我的编译器通道中?
有没有办法通过实现的接口找到服务?还是我必须全部标记?
谢谢, 吉隆坡。
【问题讨论】:
标签: php command command-line-interface symfony
您应该将它们全部标记。无法检索作为某些预期类/接口实例的服务。
无论如何,您可以获取所有内容,对其进行迭代,并仅过滤那些扩展您界面的内容。但它要慢得多,而且是最糟糕的方式。
【讨论】:
我希望我正确理解了您的问题。如果您尝试获取应用程序中定义的所有命令,那么:
$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
【讨论】: