laravel 服务提供者

每一个框架都集成了无数人的精华,在现实中我们所使用工具的最优方式就是了解他的原理,只有了解了原理之后才能得心应手。下面简述下自己的看法仅代表个人看法

laravel框架是我在实际工作中使用的比较频繁的,而且现在的tp5.0个人认为其实就是laravel的复制版,laravel启动分为以下几步,一、创建服务容器实例,二、请求发送至内核(Http/Console),启动内核在启动内核时加载服务提供者

一、laravel采用的是单一的入口模式,所有的应用请求都是通过public/index.php文件,index.php文件载入了composer生成的自动加载机制,并以此进行依赖管理,所以laravel的请求通过public/index.php入口文件触发到composer的加载机制,然后从 bootstrap/app.php 脚本获取 Laravel 应用实例,由此完成第一个动作创建服务容器的实例,由此取得实例$app

二、启动内核的重要动作之一就是加载服务提供者,所有的服务提供者都被配置在了config/app.php的providers的大数组中,在这里我们同样的可以配置自定义的类或者第三方的类库,以服务提供者的方式进行加载,(这一步我的理解是声明服务提供者的关系,也就是说该提供者是谁,在什么位置),当我们想以此方式为自己的项目带来便利的时候,就涉及到创建服务提供者

创建服务提供者,默认的服务提供者存放在app/providers文件价下,服务提供者可以自己命名但是该注意的命名空间、类关系等应当检查是否存在问题,在服务提供者这中涉及两个方法分别是register和boot方法具体含义可参考官方文档,而register(则是将服务提供者注册到服务容器),由此个人理解的顺序为,框架由入口文件index.php出发composer自动加载机制,然后从bootstrap/app.php获取laravel服务容器的实例,然后内核启动加载服务提供者。

以下是我自己编写的服务提供者

在config/app.php->providers数组中进行声明如下

原文地址:https://www.cnblogs.com/mzli/p/10383218.html