如何调用其他命令吗

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 4.1,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

如何调用其他命令吗

如果正在运行一个命令取决于另一个,而不是让用户记住执行的顺序,你可以直接叫它自己。这也是有用的,如果你想创建一个“元”命令,只是一堆运行其他命令(例如,所有的命令都需要运行时项目的代码已经改变了在生产服务器上:清理缓存,生成Doctrine2代理,倾销网络资产,…)。

从另一个调用命令很简单:

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

首先,你find ()您想要执行的命令通过命令名称。然后,您需要创建一个新的ArrayInput的参数和选择你想传递给命令。

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

提示

如果你想抑制执行命令的输出,通过NullOutput作为第二个参数$命令- > run ()

谨慎

注意所有的命令将运行在相同的进程和一些Symfony的内置命令可能不适合这种方式。欧宝娱乐app下载地址例如,缓存:清晰缓存:热身命令改变一些类定义,所以运行后他们可能会打破的东西。

请注意

大部分的时候,从代码调用命令不执行命令行并不是一个好主意。主要原因是控制台的命令的输出进行了优化,而不是通过其他命令。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。