理解如何处理控制台参数和选项

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 5.3,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

理解如何处理控制台参数和选项

欧宝娱乐app下载地址Symfony控制台应用程序遵循同样的方法docopt在大多数CLI实用工具中使用的标准。本文解释了当命令定义带有必需值或没有值的选项时,如何处理边缘情况。读这是另一篇文章了解如何在Symfony控制台命令中使用参数和选项。欧宝娱乐app下载地址

看看下面的命令,它有三个选项:

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 28 29 30 31
名称空间Acme控制台命令使用欧宝娱乐app下载地址组件控制台命令命令使用欧宝娱乐app下载地址组件控制台输入InputArgument使用欧宝娱乐app下载地址组件控制台输入InputDefinition使用欧宝娱乐app下载地址组件控制台输入InputInterface使用欧宝娱乐app下载地址组件控制台输入InputOption使用欧宝娱乐app下载地址组件控制台输出OutputInterfaceDemoArgsCommand扩展命令受保护的静态defaultName“演示:args”受保护的函数配置()->setDescription (“描述参数行为”->setDefinition (InputDefinition ([InputOption (“foo”“f”),InputOption (“酒吧”“b”, InputOption::VALUE_REQUIRED),InputOption (“猫”“c”, InputOption::Value_optional),]));}受保护的函数执行(InputInterface输入, OutputInterface输出/ /……}}

喷火选项不接受值,它也会接受(当它没有传递给命令时)或真正的(当——foo由用户传递)。的值酒吧选项(及其b分别快捷方式)是必需的。它可以用空格或与选项名分隔字符。的选项(及其c快捷方式)的行为类似,除了它不需要值。查看下表,了解传递选项的可能方式:

输入 喷火 酒吧
——酒吧=你好 “你好”
——酒吧你好 “你好”
- b =你好 ”=你好”
- b你好 “你好”
-bHello “你好”
-fcWorld -b你好 真正的 “你好” “世界”
-cfWorld -b你好 “你好” “fWorld”
-cbWorld “bWorld”

当命令还接受一个可选参数时,事情就变得有点棘手了:

1 2 3 4 5 6
/ /……InputDefinition ([/ /……InputArgument (“参数”, InputArgument::可选)]);

你可能得用特价--分隔符将选项与参数分开。看看下表中的第五个例子,它是用来告诉命令that世界的值。参数而不是可选选项的值选择:

输入 酒吧 参数
——酒吧你好 “你好”
——bar Hello World “你好” “世界”
——bar "Hello World" “Hello World”
——酒吧Hello——猫世界 “你好” “世界”
——酒吧Hello——猫——世界 “你好” “世界”
-b Hello -c World “你好” “世界”
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。
欧宝娱乐app下载地址Symfony 5.3支持通过JoliCode