您只能使用标量类型作为函数参数的默认值.
从那里引用:
The default value must be a constant expression, not (for example) a variable, a class member or a function call.
编辑:
但是如果您仍然需要将此值作为数组中的默认值,则可以执行以下操作:
如果使用默认数组,只需使用可以用str_replace()替换的占位符.如果您需要多次使用默认数组中函数的返回值,只需要使用相同的占位符并且两者都将被替换,这也具有优势.
public function create(
$data = [
"user-id" => "::PLACEHOLDER1::",
//^^^^^^^^^^^^^^^^ See here just use a placeholder
"level" => '1',
"ignore-limits" => '0',
]){
$data = str_replace("::PLACEHOLDER1::", Auth::id(), $data);
//^^^^^^^^^^^ If you didn't passed an argument and the default array with the placeholder is used it get's replaced
//$data = str_replace("::PLACEHOLDER2::", Auth::id(), $data);
//...
}
您可以做的另一个想法是设置一个默认数组,您可以检查,然后像这样分配真实数组:
public function create($data = []){
if(count($data) == 0) {
$data = [
"user-id" => Auth::id(),
"level" => '1',
"ignore-limits" => '0',
];
}
//...
}