控制台输入(参数和选项)

编辑该页面

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

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

控制台输入(参数和选项)

最有趣的部分命令的参数和选项,您可以提供。这些参数和选项允许您通过动态信息终端的命令。

使用命令参数

参数的字符串-用空格分开后命令名称本身。他们命令,可以是可选的还是必需的。例如,添加一个可选的last_name参数,使的命令的名字参数要求:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/ /……使用欧宝娱乐app下载地址\组件\控制台\输入\InputArgument;GreetCommand扩展命令{/ /……受保护的函数配置(){美元/ /……- >addArgument (“名字”,InputArgument::必需的,“你想问谁?”)- >addArgument (“last_name”,InputArgument::可选的,“你的姓吗?”);}}

现在,您已经访问last_name命令参数:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ /……GreetCommand扩展命令{/ /……受保护的函数执行(InputInterface美元输入,OutputInterface美元输出){美元文本=“嗨”美元输入- >getArgument (“名字”);美元=美元输入- >getArgument (“last_name”);如果(美元){美元文本=。' '美元;}美元输出- >writeln (美元文本“!”);}}

命令,现在可以用于以下方面:

1 2 3 4 5
美元php应用程序/控制台应用程序:问候法比你好法!美元php应用程序/控制台应用程序:问候法效力嗨法比力量!

也可以让一个参数的值列表(假设您希望迎接你的朋友)。只有最后一个参数是一个列表:

1 2 3 4 5 6 7
美元/ /……- >addArgument (“名字”,InputArgument::IS_ARRAY,“你想问候(单独的多个名称空间)?”);

使用这个,就指定你想要尽可能多的名字:

1
美元php应用程序/控制台应用程序:法比瑞安Bernhard打招呼

您可以访问的名字参数是一个数组:

1 2 3 4
美元的名字=美元输入- >getArgument (“名字”);如果(数(美元的名字)>0){美元文本=。' '.implode (”、“,美元的名字);}

有三个参数变量可以使用:

InputArgument:需要
这个论点是强制性的。不运行的命令如果论点并不提供;
InputArgument::可选
参数是可选的,因此可以省略。这是默认行为的参数;
InputArgument: IS_ARRAY
参数可以包含任意数量的值。出于这个原因,它必须使用的参数列表。

您可以组合IS_ARRAY要求可选是这样的:

1 2 3 4 5 6 7
美元/ /……- >addArgument (“名字”,InputArgument::IS_ARRAY | InputArgument::必需的,“你想问候(单独的多个名称空间)?”);

使用命令选项

与参数,选项并不是命令(这意味着您可以指定任何顺序)和两个破折号(如指定。——大喊)。选项是总是可选的,并且可以设置接受一个值(例如。- - - dir = src)或仅仅是一个布尔标志(如没有价值。——大喊)。

例如,添加一个新选项的命令可以被用来指定多少次连续消息应该打印:

1 2 3 4 5 6 7 8 9 10 11 12
/ /……使用欧宝娱乐app下载地址\组件\控制台\输入\InputOption;美元/ /……- >使用addOption (“迭代”,,InputOption::VALUE_REQUIRED,的消息应该打印多少次?”,1);

接下来,使用这个命令打印消息多次:

1 2 3
(美元=0;美元<美元输入- >getOption (“迭代”);美元+ +){美元输出- >writeln (美元文本);}

现在,当您运行这个命令,您可以指定一个——迭代国旗:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#没有提供——迭代,默认使用的是(1)美元php应用程序/控制台应用程序:问候法比你好法!美元php应用程序/控制台应用程序:问候法,迭代= 5嗨法比你好法比你好法比你好法法比你好#选项的顺序并不重要美元php应用程序/控制台应用程序:问候法,迭代= 5,大喊美元php应用程序/控制台应用程序:问候法——大喊——迭代= 5美元php应用程序/控制台应用程序:问候——大喊——迭代= 5法比安

提示

你也可以声明一个字母的快捷方式,你可以叫一个破折号,-我:

1 2 3 4 5 6 7 8 9
美元/ /……- >使用addOption (“迭代”,“我”,InputOption::VALUE_REQUIRED,的消息应该打印多少次?”,1);

注意遵守docopt标准长选项可以指定空白或后他们的价值观=(如迹象。——迭代5——迭代= 5),但短选项只能使用空格或任何分离(如。我5i5)。

有四个选项变量可以使用:

InputOption: VALUE_IS_ARRAY
这个选项接受多个值(如。- - - dir = / foo - dir = /酒吧);
InputOption: VALUE_NONE
(如不接受输入的选项。——大喊)。这是默认的行为选项;
InputOption: VALUE_REQUIRED
这个值是必需的(如。——迭代= 5i5),选择本身仍然是可选的;
InputOption: VALUE_OPTIONAL
此选项可能有也可能没有一个值(例如——大喊——大声喊=)。

您可以组合VALUE_IS_ARRAYVALUE_REQUIREDVALUE_OPTIONAL是这样的:

1 2 3 4 5 6 7 8 9
美元/ /……- >使用addOption (“颜色”,,InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY,“你喜欢哪个颜色?”,数组(“蓝”,“红色”));

提示

没有禁止您创建一个命令的选项,选择接受一个值。然而,没有方法可以区分选择时没有使用价值(命令——语言)或当它根本就没有使用(命令)。在这两种情况下,选择将检索到的值

同样,由于一个PHP的限制,没有办法传递一个空字符串作为一个选项的值。在命令,前缀命令——prefix = "情况下,的值前缀选择将

谨慎

虽然可以单独一个选项的值与空白,使用这种形式会导致一个模棱两可的选项应该出现在命令名。例如,php应用程序/控制台——迭代5应用程序:欢迎法比安是模糊的;欧宝娱乐app下载地址Symfony会解释5作为命令名称。为了避免这种情况,总是选择命令名后,或避免使用空间单独的选项名称的值。

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