gpt4 book ai didi

php - Laravel 命令 - 只有可选参数

转载 作者:可可西里 更新时间:2023-10-31 22:43:32 24 4
gpt4 key购买 nike

我有一个带有这个签名的命令

order:check {--order}

然后执行:

php artisan order:check --order 7

由于某种原因导致了这个异常

  [RuntimeException]                                 
Too many arguments, expected arguments "command".

为什么?我希望此命令可以作为 php artisan order:check 执行,也可以使用可选的订单 ID php artisan order:check --order X

最佳答案

{--order} 选项(没有 = 符号)声明一个 switch 选项,它没有参数。如果存在 switch 选项,它的值等于 true,如果不存在,则为 false(--help 就像一个开关——没有参数需要)。

当我们在命令行上为此选项提供参数时,控制台框架无法将输入与参数匹配到选项,因此它会抛出问题中所示的错误。

要允许选项接受参数,请将命令的 $signature 更改为:

protected $signature = 'order:check {--order=}'

注意在--order 后添加等号。这告诉框架 --order 选项需要一个参数——如果用户不提供参数,该命令将抛出异常。

如果我们希望我们的命令接受一个有或没有参数的选项,我们可以使用类似的语法来提供默认值:

protected $signature = 'order:check {--order=7}'

...但这对于这种特殊情况似乎没有用。

设置好之后,我们可以调用命令,为 --order 传递一个参数。该框架支持两种格式:

$ php artisan order:check --order=7 
$ php artisan order:check --order 7

...然后在我们的命令中使用 order 的值:

$orderNumber = $this->option('order');  // 7

关于php - Laravel 命令 - 只有可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46670304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com