类型提示参数不能按预期工作

时间:2018-04-17 13:21:06

标签: php laravel

我有一种情况,当我输入提示参数时,它无法正常工作。

我有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}}

1 个答案:

答案 0 :(得分:1)

在UserTransformer中,您无法写public function transform(User $user),您必须坚持父类声明public function transform(Model $modelOrCollection)