前言
上一篇博客文章收集了关于Laravel服务容器的相关知识(传送门),我们知道了服务容器主要有绑定和解析两个重要功能,那么Laravel这个框架集齐了如此多功能,我们项目可能还需要另外引入一些功能包,这些绑定必须有一个统一的管理工具,统一绑定在一个地方,这个地方就是服务提供者。
关于服务提供者
一开始学Laravel被服务容器和服务提供者两个名称搞混了,其实现在我是这样理解:容器就是底层一个大桶, 我们需要很多材料往里面填充,而提供者就是一些管道,我们就是通过提供者往容器里面塞我们需要的东西,需要的服务。
Laravel有一种机制来定义和执行每个服务的初始处理,实现初始处理的类称为服务提供者。
服务提供者,在laravel里面,其实就是一个工厂类。它最大的作用就是用来进行服务绑定。当我们需要绑定一个或多个服务的时候,可以自定义一个服务提供者,然后把服务绑定的逻辑都放在该类的实现中。在larave里面,要自定一个服务提供者非常容易,只要继承Illuminate\Support\ServiceProvider这个类即可。下面通过一个简单的自定义服务提供者来说明服务提供者的一些要点: