2016-08-15 11 views
-1

最近プッシャーリアルタイムシステムでjefferyからビデオを視聴しました。私はすべてが正しく働いています。私の質問は、彼がビデオ中にコメントしたことです。彼はroute.php内でこのコードを持っていた:ServiceProviderを作成するLaravel

 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から移動しなければならない可能性がありますが、詳細にそれ以上入らないことをコメントしています。私はサービスプロバイダーを探していましたが、まだかなり理解していません。これをサービスプロバイダに正しく移動するにはどうすればよいですか?

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

答えて

3

それはLaravelのサービスプロバイダですべてのサービスを登録することをお勧めします。サービスプロバイダは、アプリ/プロバイダでフォルダに位置している - プッシャーサービスの定義は確かにそこにすでにあるAppServiceProviderのいずれかに移動する必要があります - ちょうどそのレジスタ方法でサービス定義を追加します。

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); 
    }); 
    } 
} 

2番目のオプションのために決定した場合、あなたはのconfig/app.phpファイルに新しいプロバイダを登録する必要があります - ちょうどプロバイダ配列にそれが名前だ追加:

<?php 

    return [ 
    'providers' => [ 
     // existing providers 
     'App\Providers\PushServiceProvider' 
    ], 
    ]; 
関連する問題