美文网首页我爱编程
Lumen - 服务容器,服务提供者,Facades的关系

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

作者: 一梦三四年lyp | 来源:发表于2018-05-11 19:16 被阅读0次
  • 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文件

     <?php
    /**
       * Created by PhpStorm.
       * User: dava
       * Date: 2018/5/11
       * Time: 17:54
     */
    
    namespace App\Providers\Dava;
    
    use App\Http\Controllers\test;
    use Illuminate\Support\ServiceProvider;
    
    class DavaServiceProvider extends ServiceProvider
    {
      /**
       * Bootstrap the application services.(引导应用程序服务。)
       *
       * @return void
       */
      public function boot()
      {
      //
      }
    
      /**
     * Register the application services.(注册应用程序服务。)
     *
     * @return void
     */
     public function register()
    {
      //
      $this->app->bind('dava',function(){ 
          return new test();    //要操作的对象
      });
    }
    }
    

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

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

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

    <?php
    /**
     * Created by PhpStorm.
     * User: dava
     * Date: 2018/5/8
     * Time: 15:17
     */
    namespace App\Http\Controllers\Admin\Messages;

    use App\Define\Common;
    use App\Http\Controllers\Controller;
    use App\Logic\Admin\Messages\AdminMessagesLogic;
    use Illuminate\Support\Facades\App;
    use Illuminate\Support\Facades\Dava;

    class GetList extends Controller
    {

      public function run() {
      //没有引入Facades的调用方式,但是这样不太友好,还有优化
      $myfoo = App::make("dava");
      echo $myfoo->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的关系

    Contracts 合同,契约,也就是接口,定义一些规则,每个实现此接口的都要实现里面的方法 操作示例首先先在:a...

  • Laravel思维导图之Laravel核心概念

    Laravel 的核心概念包括:服务容器、服务提供者、门面(Facades)、契约(Contracts)。 服务容...

  • laravel如何自定义实现Facade(门面模式)

    Facades为程序的服务容器提供了可用的类提供了一个静态接口。laravel中Facades作为服务容器内基类的...

  • Dubbo架构

    架构 调用关系说明 服务容器负责启动,加载,运行服务提供者。 服务提供者在启动时,向注册中心注册自己提供的服务。 ...

  • Dubbo学习文档

    入门 - 架构 节点角色说明 调用关系说明 服务容器负责启动,加载,运行服务提供者。 服务提供者在启动时,向注册中...

  • dubbo要点

    调用关系说明: 0. 服务容器负责启动,加载,运行服务提供者。 1. 服务提供者在启动时,向注册中心注册自己提供的...

  • Dubbo的架构体系

    调用关系说明 1. 服务容器负责启动,加载,运行服务提供者。 2. 服务提供者在启动时,向注册中心注册自己提供的服...

  • laravel中的Facades

    1 什么是Facades Facades 为应用的 服务容器 提供了一个「静态」 接口。Laravel 自带了很多...

  • (2) dubbo的入门使用

    1.dubbo的架构 调用关系说明1.服务容器负责启动,加载,运行服务提供者。2.服务提供者在启动时,向注册中心注...

  • [ Laravel 5.3 文档 ] 核心概念 —— 门面(Fa

    1. 简介 门面为服务器容器提供了“静态接口”,La的门面(facades)作为服务器容器中的底层类的“静态代理”...

网友评论

    本文标题:Lumen - 服务容器,服务提供者,Facades的关系

    本文链接:https://www.haomeiwen.com/subject/ljkqdftx.html