laravel 服务提供者 别名 门面 3者之间的关系

来源:互联网 发布:收看地方电视台的软件 编辑:程序博客网 时间:2024/06/05 20:17

这3者,实际上都能单独使用。但是通常我们在看别人写的扩展包时,一般都写了服务提供者,以及facade文件,然后在配置文件中注册服务提供者,注册别名。显然这几个是紧密结合在一块的,下面我们来说说他们之间到底是什么关系。

在一个框架里面我们要调用一个类 ,一般都要经历这几个过程 1是require加载 2 是new  3是执行 但是在laravel 我们多半是这样的,例如日志类,use Log ; Log::info(); 看似简单的调用,实际上背后就是这3者的紧密结合所提供的,如下来分析其流程;

1 首先laravel的加载,用的是composer,几乎99%都是用psr-4的命名空间自动加载,解决rquire的问题

2 容器解决了代码里到处new的问题。

3 服务器提供者负责将对象绑定到容器里面去。

事实上在这里我们已经可以很方便的使用一个对象了,例如app('cache')->get(); 系统就会从容器里获取到了cache对象,但是显然还不够方便;

4 门面,有了门面之后我们可以这样调用cache::get(); 看看,又简化了几个字。其背后的原理就是框架帮你从容器里面获取到对象,系统帮你做了这一步app('cache')->get();

5 别名,上面漏说了一点,如果没有别名,我们使用cache::get();必须先引入门面的命名空间,通常来说应该先在文件的头部这么写use Illuminate\Support\Facades\Cache;然后才能cache::get();有了别名之后.我们只需要use Cache; 就可以了,


综上,我们看似很简单的use DB,实际上laravel为了我们方便使用,做了大量工作;



原创粉丝点击