PHP 8.2中如何定义返回对象数组的函数返回类型(Laravel 10)
Laravel 10中返回交易记录列表的类型声明解决方案
- 确认PHP版本:确保你的PHP版本在8.0及以上,
Type[]这类数组返回类型语法是PHP 8.0才支持的。 - 区分Eloquent集合与纯数组:
如果函数返回的是Eloquent查询结果(比如Movement::all()),实际返回的是Illuminate\Database\Eloquent\Collection实例,而非纯Movement[]数组,此时应声明返回Collection类型:
若使用PHP 8.1及以上,可通过泛型明确集合内元素类型:use Illuminate\Database\Eloquent\Collection; use App\Models\Movement; public function getAllMovements(): Collection { return Movement::all(); }use Illuminate\Database\Eloquent\Collection; use App\Models\Movement; public function getAllMovements(): Collection<Movement> { return Movement::all(); } - 若需返回纯模型数组:
确保函数内部确实返回Movement实例数组(比如通过->all()提取集合内的模型),同时正确导入Movement模型避免命名空间错误:
注:PHP中use App\Models\Movement; public function getAllMovements(): array { return Movement::get()->all(); }Movement[]是array的语法糖,若要让IDE识别元素类型,可结合注释或泛型补充说明。
内容的提问来源于stack exchange,提问作者Tchokouani Edy Michel
相关产品推荐
相关产品推荐

