Lumen - 服务容器,服务提供者,Facades的关系

  • Contracts 合同,契约,也就是接口,定义一些规则,每个实现此接口的都要实现里面的方法
ServiceContainer 实现Contracts,具体的逻辑实现

ServiceProvider ServiceContainer的服务提供者,返回ServiceContainer的实例化,供其他地方使用,可以把它加入到app/config的provider中,会被自动注册到容器中

Facades 简化ServiceProvider的调用方式,而且可以静态调用ServiceContainer中的方法

ServiceContainer :实现Contracts,具体的逻辑实现

ServiceProvider :ServiceContainer的服务提供者,返回ServiceContainer的实例化,供其他地方使用,可以把它加入到app/config的provider中,会被自动注册到容器中

Facades: 简化ServiceProvider的调用方式,而且可以静态调用ServiceContainer中的方法
  • 操作示例
    首先先在:app\Providers\Dava目录下创建DavaServiceProvider.php文件

     app->bind('dava',function(){ 
          return new test();    //要操作的对象
      });
    }
    }
    

第二,在dava-project\bootstrap目录下的app.php 给应用注册服务,这里注册的服务都是服务提供者 提供 位置都在 \App\Providers下

  $app->register(\App\Providers\Dava\DavaServiceProvider::class);

第三,调用刚刚注册的服务,你可以选择在任意可以掉用方法的地方掉用

    Test();

      //引入Facades的调用方式
      echo Dava::Test();die;
}
}

第四,引用Facades模式,找到\vendor\illuminate\support\Facades目录,
并且再里面创建Dava.php

  namespace App\Facades;
  use Illuminate\Support\Facades\Facade;

  class Dava Facade
  {
    protected static function getFacadeAccessor()
      {
    //这里返回的是ServiceProvider中注册时,定义的字符串
    return 'dava';
}
}

完工

你可能感兴趣的:(Lumen - 服务容器,服务提供者,Facades的关系)