Laravel 通过依赖注入的方式获取的 Request 实例, 与函数的方式 request ( ) 有什么不同

class UserController extends Controller
{
    public function store(Request $request)
    {
        $request->merge([
            'aa' => 999
        ]);
        request()->merge([
            'bb' => 999
        ]);

        dump($request->all());
        dump(request()->all());
    }
}

打印结果:

{
    "aa": 999,
    "bb": 999
}

{
    "aa": 999,
    "bb": 999
}

上面两个dump()函数打印出来的数据都是一样的, 为什么大家都习惯使用Request实例, 而极少或者基本没有看到有人用request()函数的呢?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4

可能前面那种,看上去更的 “面向对象” 一点吧,,,

4年前 评论
Epona

没什么不一样,request() 方法只是一个辅助函数罢了,我比较喜欢这一种😂

4年前 评论

其实是一样的.

function request() {
    return app('request');
}
4年前 评论
LDL1023

是一样的。

题主可以深入看一下 Laravel 的代码

file

解析 controller method 的函数,

$this->container->make($class->name);

可以看到,最后是调用了容器的 make 方法来解析依赖

再看看 request() 方法,
file
file

最后也是调用了容器的 make 方法来解析依赖,

所以是一样的。

4年前 评论

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