Laravel Artisan 命令行:参数和选项的区别 3 个改进

问题#

对于一个 Artisan 命令,参数和选项有什么区别?

回答#

在回答参数和选项有什么区别之前,先重温一下什么是参数,什么是选项。

假如我们要用 Artisan 的 make:command 命令生成一个 HashMD5Command 命令类,并指定命令名为 hash:md5,执行以下命令:

$ php artisan make:command HashMD5Command --command=hash:md5

其中 HashMD5Command 就是参数(argument),--command=hash:md5 就是选项(option)。

看一下 make:command 命令的帮助信息,有助于我们更好地理解参数和选项:

参数和选项的区别

参数和选项的区别#

输入时的不同#

在执行命令时,参数必须严格按定义时的顺序输入,不需输入参数名,只需输入参数的值即可。输入选项则必须带选项名,且选项名前须加 -- 前缀(选项简写字母前加 -),选项可按任意顺序输入。

定义方式的不同#

参数与选项的定义方式见参考部分给出的链接。

可选的不同#

参数可以是可选的,但可选参数必须定义在必要参数之后,即以下定义方式是不允许的,可选参数 param2 不能放在必要参数 param3 之前:

command:name {param1} {param2?} {param3}

选项天生就是可选的,选项可以不带值,这时它是一个开关选项。选项还可以指定一个简写字母。

参考#

本文为 Wiki 文章,邀您参与纠错、纰漏和优化