Laravel 9 phpstan



我得到这个错误:

Cannot call method getClientOriginalExtension() on array<int, IlluminateHttpUploadedFile>|IlluminateHttpUploadedFile|null.

运行phpstan

这代码:

$imageName = time() . '.' . $request->file('image')->getClientOriginalExtension();
$request->file('image')->move(base_path() . '/public/uploads/', $imageName);

我试着添加$request->file('image')[0]->getClientOriginalExtension();,但没有修复它

您正在得到这个错误,因为getClientOriginalExtension在这个联合类型中不存在:array<int, IlluminateHttpUploadedFile>|IlluminateHttpUploadedFile|null这个联合类型被使用,因为静态分析无法知道$request->file('image')是否会返回一个文件,文件数组或null

首先你可以做一个null检查。您要获取的文件可能不存在。

$file = $request->file('image');
if ($file === null) {
// Handle this case
}

然后,您可以检查是否有多个文件或只有一个:

if ($file instanceof UploadedFile) {
// It's one file
} else {
// It's an array of files
}

但是如果在你的用例中你确定它总是一个文件,你可以这样做:

/** @var IlluminateHttpUploadedFile $file */
$file = $request->file('image');

最新更新