如何从控制器调用命令
编辑本页如何从控制器调用命令
的控制台组件文档欧宝官网下载app介绍如何创建控制台命令。本文介绍了如何从控制器直接使用控制台命令。
您可能需要调用一些仅在控制台命令中可用的函数。通常,您应该重构命令并将一些逻辑移动到可以在控制器中重用的服务中。但是,当该命令是第三方库的一部分时,您不希望修改或复制它们的代码。相反,您可以直接从控制器运行该命令。
谨慎
与从控制台直接调用相比,由于请求堆栈开销,从控制器调用命令会有轻微的性能影响。
假设你想运行调试:树枝
在你的控制器内部:
12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
/ / src /控制器/ DebugTwigController.php名称空间应用程序\控制器;使用ob娱乐下载\包\FrameworkBundle\控制台\应用程序;使用ob娱乐下载\包\FrameworkBundle\控制器\AbstractController;使用ob娱乐下载\组件\控制台\输入\ArrayInput;使用ob娱乐下载\组件\控制台\输出\BufferedOutput;使用ob娱乐下载\组件\HttpFoundation\响应;使用ob娱乐下载\组件\HttpKernel\KernelInterface;类DebugTwigController扩展AbstractController{公共函数debugTwig(KernelInterface$内核):响应{$应用程序=新应用程序($内核);$应用程序->setAutoExit (假);$输入=新ArrayInput ([“命令”=>调试:树枝的,//(可选)定义命令参数的值“fooArgument”=>“barValue”,//(可选)将选项传递给命令“——酒吧”=>“fooValue”]);//你可以使用NullOutput()如果你不需要输出$输出=新BufferedOutput ();$应用程序->运行($输入,$输出);//返回输出,如果你使用NullOutput()$内容=$输出->fetch ();//返回新的响应(""),如果你使用NullOutput()返回新响应($内容);}}
显示彩色命令输出
通过告诉BufferedOutput
它通过第二个参数进行装饰,它将返回Ansi颜色编码的内容。的SensioLabs anitohtml转换器可以用来将其转换为彩色HTML。
首先,要求包:
1
$编写器需要sensiolabs/ansi-to-html
现在,在你的控制器中使用它:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
/ / src /控制器/ DebugTwigController.php名称空间应用程序\控制器;使用SensioLabs\AnsiConverter\AnsiToHtmlConverter;使用ob娱乐下载\组件\控制台\输出\BufferedOutput;使用ob娱乐下载\组件\控制台\输出\OutputInterface;使用ob娱乐下载\组件\HttpFoundation\响应;/ /……类DebugTwigController扩展AbstractController{公共函数sendSpool(int$消息=10):响应{/ /……$输出=新BufferedOutput (OutputInterface::VERBOSITY_NORMAL,真正的//修饰为true);/ /……//返回输出$转换器=新AnsiToHtmlConverter ();$内容=$输出->fetch ();返回新响应($转换器->转换($内容));}}
的AnsiToHtmlConverter
也可以注册作为树枝扩展,并支持可选主题。
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。
版本: