我有一种情况,当我输入提示参数时,它无法正常工作。
我有abstract class BaseTransformer
{
...
public function transform(Model $modelOrCollection);
}
检查提示类型
UserTransformer
然后我有class UserTransformer extends BaseTransformer
{
.....
.....
public function transform(User $user)
{
return [
....
....
];
}
}
检查类型提示
UserTransformer
但是当我新建Illuminate\Database\Eloquent\Model
时,它会抛出一个说明类型不匹配的异常
ErrorException with message'声明 应用程序\变压器\ UserTransformer ::变换(应用程序\变压器\用户 $ user)应该兼容 应用程序\变压器\ BaseTransformer ::变换(照亮\数据库\雄辩\型号 $ modelOrCollection)'
据我所知,App \ User类扩展了instanceof
,当我使用>>> App\User::find(20333) instanceof Illuminate\Database\Eloquent\Model
=> true
运算符时,它返回true。
Laravel 5.6
出了什么问题?
我正在使用php7.2
,{{1}}
答案 0 :(得分:1)
在UserTransformer中,您无法写public function transform(User $user)
,您必须坚持父类声明public function transform(Model $modelOrCollection)