如何创建一个控制台命令吗
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.1,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
如何创建一个控制台命令吗
控制台页面组件的部分(控制台组件)介绍了如何创建一个控制台命令。这个食谱文章涵盖Symfony2框架内创建控制台命令时的差异。ob娱乐下载
自动注册命令
与Symfony2自动提供控制台命令,创建一个ob娱乐下载命令
目录在你的包和创建一个php文件后缀为Command.php
你想提供的每个命令。例如,如果您想要扩展AcmeDemoBundle
Symfony中可用(标准版)欢迎你ob娱乐下载从命令行创建GreetCommand.php
并添加以下:
1 2 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 28 29 30 31 32 33 34 35 36 37
/ / src / Acme / DemoBundle /命令/ GreetCommand.php名称空间Acme\DemoBundle\命令;使用ob娱乐下载\包\FrameworkBundle\命令\ContainerAwareCommand;使用ob娱乐下载\组件\控制台\输入\InputArgument;使用ob娱乐下载\组件\控制台\输入\InputInterface;使用ob娱乐下载\组件\控制台\输入\InputOption;使用ob娱乐下载\组件\控制台\输出\OutputInterface;类GreetCommand扩展ContainerAwareCommand{受保护的函数配置(){美元这- >setName (“演示:问候”)- >setDescription (“欢迎某人”)- >addArgument (“名字”,InputArgument::可选的,“你想问谁?”)- >使用addOption (“喊”,零,InputOption::VALUE_NONE,如果设置,任务会大喊大写字母的);}受保护的函数执行(InputInterface美元输入,OutputInterface美元输出){美元的名字=美元输入- >getArgument (“名字”);如果(美元的名字){美元文本=“你好”。美元的名字;}其他的{美元文本=“你好”;}如果(美元输入- >getOption (“喊”)){美元文本= strtoupper (美元文本);}美元输出- >writeln (美元文本);}}
这个命令将现在可用自动运行:
1
美元app /控制台演示:欢迎法比安
服务从服务容器
通过使用ContainerAwareCommand作为基类命令(而不是更基本命令),您可以访问服务容器。换句话说,你可以访问任何配置服务。例如,您可以轻松地扩展这个任务可翻译:
1 2 3 4 5 6 7 8 9 10
受保护的函数执行(InputInterface美元输入,OutputInterface美元输出){美元的名字=美元输入- >getArgument (“名字”);美元翻译=美元这- >getContainer ()- >get (“翻译”);如果(美元的名字){美元输出- >writeln (美元翻译- >反式(“你好% % !”,数组(%的名字%的= >美元的名字)));}其他的{美元输出- >writeln (美元翻译- >反式(“你好!”));}}
测试命令
当测试命令作为完整的框架的一部分应用程序应该用来代替应用程序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
使用ob娱乐下载\组件\控制台\测试人员\CommandTester;使用ob娱乐下载\包\FrameworkBundle\控制台\应用程序;使用Acme\DemoBundle\命令\GreetCommand;类ListCommandTest扩展\PHPUnit_Framework_TestCase{公共函数testExecute(){/ /模拟内核或创建一个取决于你的需求美元应用程序=新应用程序(美元内核);美元应用程序- >add (新GreetCommand ());美元命令=美元应用程序- >找到(“演示:问候”);美元commandTester=新CommandTester (美元命令);美元commandTester- >执行(数组(“命令”= >美元命令- >getName ()));美元这- >assertRegExp (“/……”,美元commandTester- >getDisplay ());/ /……}}
能够使用完全为您的控制台设置服务容器测试可以扩展您的测试WebTestCase:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24
使用ob娱乐下载\组件\控制台\测试人员\CommandTester;使用ob娱乐下载\包\FrameworkBundle\控制台\应用程序;使用ob娱乐下载\包\FrameworkBundle\测试\WebTestCase;使用Acme\DemoBundle\命令\GreetCommand;类ListCommandTest扩展WebTestCase{公共函数testExecute(){美元内核=美元这- >createKernel ();美元内核- >引导();美元应用程序=新应用程序(美元内核);美元应用程序- >add (新GreetCommand ());美元命令=美元应用程序- >找到(“演示:问候”);美元commandTester=新CommandTester (美元命令);美元commandTester- >执行(数组(“命令”= >美元命令- >getName ()));美元这- >assertRegExp (“/……”,美元commandTester- >getDisplay ());/ /……}}
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。