Comment démarrer un fournisseur de services dans laravel 5

Je lance mes premiers pas dans Laravel 5, en particulier avec le développement de packageages. Mon but avec ce package est d'être lancé dans chaque request, toujours.

Alors, j'ai commencé à créer le service HelloWorldServiceProvider:

<?php namespace FacebookKiller\Modules\HelloWorld; use Illuminate\Support\ServiceProvider; class HelloWorldServiceProvider extends ServiceProvider{ protected $defer = false; public function boot(){ dd('hello world at boot()') } public function register() { dd('hello world at register()') } } 

En fait, ce file est ce path depuis la racine:

 /Larave/app/Modules/HelloWorld/HelloWorldServiceProvider.php 

Ensuite, je config/app.php file config/app.php pour append le fournisseur de services

 'Illuminate\Translation\TranslationServiceProvider', 'Illuminate\Validation\ValidationServiceProvider', // my module 'FacebookKiller\Modules\HelloWorld\HelloWorldServiceProvider' 

Enfin, pour vérifier si dd() est appelé, j'ai modifié le file routes.php comme:

 Route::get('test', function(){ return "Making a test request"; }); 

Le résultat est négatif. Le fournisseur de services n'est pas chargé. Selon les documents:

Le report du chargement d'un tel fournisseur améliorera les performances de votre application, puisqu'il n'est pas chargé du système de files à chaque request. Pour différer le chargement d'un fournisseur, définissez la propriété différer sur true

Donc, je rends le paramètre opposé protected $defer à false . Mais la fonction dd() n'est pas déclenchée. Il est important d'utiliser le type de fournisseur de services, car de cette façon, je pourrais charger lang, les vues et les files de configuration de celui-ci.

Supprimez le file de storage/framework/services.json .

Laravel cache toutes datatables des fournisseurs de services dans ce file. Regardez toujours ce file lors du debugging des fournisseurs de services.

Voici une réponse très utile concernant les fournisseurs de services et les services. Fichier Json

Comment Laravel 4 charge-t-il un fournisseur différé?

./artisan clear-comstackd aussi l'affaire. Après avoir trouvé cette solution, je pensais qu'il devait y avoir une command artisan pour cela. Et le bingo, il existe déjà. En regardant son code, j'ai vu que, en plus d'effacer le file de class compilé, il permet également d'effacer les services.json .

 public function fire() { if (file_exists($path = $this->laravel->storagePath().'/framework/comstackd.php')) { @unlink($path); } if (file_exists($path = $this->laravel->storagePath().'/framework/services.json')) { @unlink($path); } } 

Dans le prochain démarrage de l'application services.json est recréé.