Laravel Artisan 命令行:参数和选项的区别
问题
对于一个 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}
选项天生就是可选的,选项可以不带值,这时它是一个开关选项。选项还可以指定一个简写字母。