底层原理 —— 服务提供者

1、所有的服务提供者都继承自 IlluminateSupportServiceProvider 类。大部分服务提供者都包含两个方法: register 和 boot 。在 register 方法中,你唯一要做的事情就是绑定服务到服务容器,不要尝试在该方法中注册事件监听器,路由或者任何其它功能。

通过 Artisan 命令 make:provider 即可生成一个新的提供者:

php artisan make:provider RiakServiceProvider

注意:使用上述命令,我们还要在config/app.php中的providers数组中添加AppProvidersRiakServiceProvider::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()

  

原文地址:https://www.cnblogs.com/hanmengya/p/10843619.html