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
我只想知道如何将我的所有命令 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