关于 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框架底层做了某些事情吗?
可能表述的不是很清楚,希望有人能解答我的疑惑,谢谢

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 4

:flushed: :flushed: :flushed:

5年前 评论

依赖注入参考文档 Laravel 服务容器解析模块

5年前 评论

你可以认为框架在后台对update方法中的每个参数,都按照预先声明的参数类型进行了new初始化对象的操作。参考文章在此

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!