关于 update 方法的疑问?
public function update(UserRequest $request, User $user, ImageUploadHandler $uploader )
{
$data = $request->all();
if($request->file('avatar')){
$result = $uploader->save($request->file('avatar'),'avatars',$user->id);
if($result){
$data['avatar'] = $result['path'];
}else{
//上传有错误 withErrors可以携带回错误信
return back()->withErrors(['上传格式有错误!']);
}
}
$user->update($data);
return redirect()->route('users.show', $user->id)->with('success','个人资料更新成功');
}
表单提交通过路由调用的是这个update方法,这里面现在有三个参数,最开始的时候只有UserRequest和User这两个,一个是http请求,一个是通过id对应的用户对象,现在咱们教程又加了第三个ImageUploadHandler类,而且这三个参数互换位置都不会影响代码执行,这是为什么呢?
还有一个问题,我们平时自己写代码的时候,假如类里面的方法有三个参数,最后调用的时候都会传三个参数,比如
$obj = new Obj();
$obj->update($param1,$param2,$param3);
在这里,为什么我们可以直接注入ImageUploadHandler这个工具类呢,是因为laravel框架底层做了某些事情吗?
可能表述的不是很清楚,希望有人能解答我的疑惑,谢谢
推荐文章: