如何调用其他命令

编辑本页

如何调用其他命令

如果一个命令依赖于在它之前运行的另一个命令,您可以调用控制台命令本身。如果一个命令依赖于另一个命令,或者如果你想创建一个运行一堆其他命令的“元”命令(例如,当项目的代码在生产服务器上发生变化时需要运行的所有命令:清除缓存、生成Doctrine代理、转储web资产……),这是很有用的。

使用find ()方法通过传递命令名称来查找要运行的命令。然后,创建一个新的ArrayInput使用要传递给命令的参数和选项。

最终,调用run ()方法实际运行该命令并从该命令返回返回的代码(从命令的返回值)execute ()方法):

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
/ /……使用欧宝娱乐app下载地址组件控制台命令使用欧宝娱乐app下载地址组件控制台输入ArrayInput使用欧宝娱乐app下载地址组件控制台输入InputInterface使用欧宝娱乐app下载地址组件控制台输出OutputInterfaceCreateUserCommand扩展命令/ /……受保护的函数执行(InputInterface输入, OutputInterface输出无效命令->getApplication ()->找到(“演示:问候”);参数= (“名字”= >“法””,大喊“= >真正的,);greetInputArrayInput (参数);returnCode命令->运行(greetInput输出);/ /……}}

提示

如果您想抑制已执行命令的输出,请传递一个NullOutput正如第二个论点命令- > run ()

谨慎

请注意,所有命令都将在同一个进程中运行,Symfony的一些内置命令可能不能很好地以这种方式工作。欧宝娱乐app下载地址例如,缓存:清晰而且缓存:热身命令会改变一些类的定义,所以在它们之后运行一些命令很可能会出错。

请注意

大多数情况下,从未在命令行上执行的代码中调用命令并不是一个好主意。主要原因是命令的输出针对控制台进行了优化,不能传递给其他命令。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。
欧宝娱乐app下载地址Symfony 6.2支持通过苏禄人
欧宝娱乐app下载地址Symfony 6.2支持通过Les-Tilleuls.coop