【发布时间】:2021-02-23 22:24:27
【问题描述】:
我正在尝试创建一个带有可选参数的函数,如果没有传入该参数,则默认为一个空的 Laravel 集合。
我尝试了以下方法:
function myFunction(string $string, Collection $collection = [])
结果:不能使用数组作为 Collection 对象的默认参数
function myFunction(string $string, Collection $collection = collect([]))
结果:常量表达式包含无效操作
function myFunction(string $string, Collection $collection = new Collection)
结果:常量表达式包含无效操作
我能做的如下:
function myFunction(string $string, Collection $collection = null){
$collection = $collection ?? new Collection;
}
有没有更好的方法来做到这一点,还是我应该坚持现有的?
【问题讨论】:
-
$collection = $collection ??新收藏;
-
@GiacomoM 谢谢我可以这样做,但希望找出是否可以在参数中完成
-
在第二个例子中,为什么你使用 collect([]) 而不是 collect() (你不需要方括号)
-
@GiacomoM 不知道。认为它需要一个数组,所以传入一个空数组
-
我认为你已经做到了最好的(目前)。我很想添加一个问号以允许显式传递空值。可能会保存一个致命错误。
, ?Collection $collection = null)