【问题标题】:Making ServiceProvider Laravel制作服务提供者 Laravel
【发布时间】:2016-12-21 16:29:39
【问题描述】:

我最近在 pusher 实时系统上观看了 jeffery way 的视频。我的一切工作正常。我的问题是指他在视频中发表的评论。他的 route.php 中有这段代码:

        App::bind('Pusher', function($app){
        $options = array(
            'cluster' => 'eu',
            'encrypted' => true
        );
        $keys = $app['config']->get('services.pusher');
        return new Pusher($keys['public'], $keys['secret'], $keys['app_id'], $options);
    });

他认为这应该从 routes.php 转移到服务提供商,但没有进一步详细说明。我一直在寻找服务提供商,但还不太了解。如何正确将此 a 移至服务提供商?

https://github.com/laracasts/Pusher-Lesson/blob/master/app/routes.php

【问题讨论】:

    标签: php laravel laravel-5 service-provider


    【解决方案1】:

    在 Laravel 的服务提供者中注册所有服务是一个很好的做法。服务提供者位于 app/Providers 文件夹 - Pusher 服务的定义确实应该移动到已经存在的 AppServiceProvider 中 -只需在其 register 方法中添加服务定义:

    class AppServiceProvider extends ServiceProvider
    {
      public function register()
      {
        $this->registerPusher();
      }
    
      private registerPusher() {
        $this->app->bind('Pusher', function($app){
          $options = array(
            'cluster' => 'eu',
            'encrypted' => true
        );
        $keys = $app['config']->get('services.pusher');
        return new Pusher($keys['public'], $keys['secret'], $keys['app_id'], $options);
        });
      }
    }
    

    如果您想将相关服务组合在一起,您可以创建一个新的(例如 PusherServiceProvider):

    class PushServiceProvider extends ServiceProvider
    {
      public function register()
      {
        $this->registerPusher();
      }
    
      private registerPusher() {
        $this->app->bind('Pusher', function($app){
          $options = array(
            'cluster' => 'eu',
            'encrypted' => true
        );
        $keys = $app['config']->get('services.pusher');
        return new Pusher($keys['public'], $keys['secret'], $keys['app_id'], $options);
        });
      }
    }
    

    如果您决定选择第二个选项,则需要在 config/app.php 文件中注册新的提供程序 - 只需将其名称添加到 providers数组:

    <?php
    
      return [
        'providers' => [
          // existing providers
          'App\Providers\PushServiceProvider'
        ],  
      ];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-24
      • 2016-10-06
      • 1970-01-01
      • 1970-01-01
      • 2017-01-11
      • 2019-05-29
      • 2018-08-06
      • 2014-04-20
      相关资源
      最近更新 更多