【发布时间】:2019-10-11 11:28:09
【问题描述】:
我使用 Symfony 控制台作为独立的来创建 CLI 应用程序。
Symfony 控制台文档在服务方面一目了然。有人可以给我一个实际的例子来说明它是如何工作的吗?
例如,在您拥有的文档中:
- "How to call other commands" 但这有一条注释“从不在命令行上执行的代码中调用命令不是一个好主意”
- "Getting services from the service container" 但这并没有告诉你如何创建它们。
我真的很困惑!
例如,“从服务容器获取服务”中的示例显示了一个示例$this->userManager->create($input->getArgument('username'));
但它没有显示给我。如何创建具有create 函数的神奇userManager 类?
如果我将userManager 创建为标准命令,那么鉴于 Symfony 控制台只有三个生命周期,我看不到如何创建子功能? initialize()、interact() 和 execute()
【问题讨论】:
-
当然,
$this->userManager = $userManager;但我说的是UserManager“服务”提供的->create()位?我看不出它如何适应 Symfony 控制台生命周期,文档也没有提供任何实际示例。 -
@LittleCode
UserManager是一个应该存在的类,并且应该有一个create方法。你可以想象用 UserManager 替换你自己注册为服务的类symfony 的服务容器。 -
澄清一下,您是在 Symfony 框架中使用控制台命令还是单独使用控制台组件?您的问题表明它是一个独立的命令。在这种情况下,容器(及其服务)不可用。
-
@Cerad 只是独立的 (
php composer.phar require symfony/console) -
好的。您正在查看如何在框架文档中使用控制台命令。您需要查看独立文档:symfony.com/doc/current/components/console.html 您不会在其中看到任何提及容器和服务的内容,因为甚至没有加载容器组件,更不用说配置了。可以安装容器,但最好的选择可能是只使用框架骨架,直到您感到舒服为止。骨架为您提供容器、控制台和一些配置。