zoukankan      html  css  js  c++  java
  • 底层原理 —— 服务提供者

    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()
    

      

  • 相关阅读:
    Lintcode415-Valid Palindrome-Medium
    Lintcode455-StudentID-Easy
    Lintcode241-String to Integer
    Lintcode521-Remove Duplicate Numbers in Array-Easy
    Lintcode214-Max of Array-Naive
    面试一个小公司,TPM相关概念
    C#, introduction, general
    make命令和makefile
    OS_Architecture_MemoryHierarchy
    Leecode_98_Validate_Binary_Search_Tree
  • 原文地址:https://www.cnblogs.com/hanmengya/p/10843619.html
Copyright © 2011-2022 走看看