2016-08-15 1 views
-1

J'ai récemment regardé une vidéo de manière jeffery sur le système en temps réel pousseur. J'ai tout fonctionne correctement. Ma question fait référence à un commentaire qu'il a fait pendant la vidéo. Il avait ce code à l'intérieur de son route.php:Making 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); 
    }); 

Il commente que cela pourrait devrait être déplacé de la routes.php à un fournisseur de services, mais ne va pas plus loin dans le détail. J'ai recherché des fournisseurs de services, mais pas encore très compréhensif. Comment puis-je transférer cela au fournisseur de services correctement?

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

Répondre

3

Il est une bonne pratique d'enregistrer tous les services dans les fournisseurs de services de Laravel. Les fournisseurs de services sont situés dans app/fournisseurs dossier - devrait en effet être déplacé La définition de services Pusher soit AppServiceProvider qui est déjà là-bas - il suffit d'ajouter la définition du service dans sa méthode de registre:

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

ou vous pouvez en créer un nouveau (par exemple PusherServiceProvider) si vous voulez des services liés à regrouper:

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

Si vous choisissez la deuxième option, vous devrez enregistrer le nouveau fournisseur dans votre config/app.php fichier - il suffit d'ajouter son nom aux fournisseurs tableau:

<?php 

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