底层原理 —— 服务提供者
1、所有的服务提供者都继承自 Illuminate\Support\ServiceProvider
类。大部分服务提供者都包含两个方法: register
和 boot
。在 register
方法中,你唯一要做的事情就是绑定服务到服务容器,不要尝试在该方法中注册事件监听器,路由或者任何其它功能。
通过 Artisan 命令 make:provider
即可生成一个新的提供者:
php artisan make:provider RiakServiceProvider
注意:使用上述命令,我们还要在config/app.php中的providers数组中添加App\Providers\RiakServiceProvider::class,
register 方法
正如前面所提到的,在 register
方法中只绑定服务到服务容器,而不要做其他事情,否则,一不小心就可能用到一个尚未被加载的服务提供者提供的服务。
boot 方法
如果我们想要在服务提供者中注册视图 composer 该怎么做?这就要用到 boot
方法了。该方法在所有服务提供者被注册以后才会被调用,这就是说我们可以在其中访问框架已注册的所有其它服务:
应用实例:我们在生成的服务提供者的register()方法中写入以下代码
public function register() { $this->app->singleton('yh', function ($app) { return new ConnectionController(); }); }
//yh为一个参数,可以为任意值,return返回的实例化的控制器
在ConnectionController或者其他控制器中调用时:
app('yh')->index()//指向要调用的方法,例如index()