Skip to content

Instantly share code, notes, and snippets.

@nazo
Created May 18, 2015 04:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nazo/116f7ff2401d231c2619 to your computer and use it in GitHub Desktop.
Save nazo/116f7ff2401d231c2619 to your computer and use it in GitHub Desktop.
[php][laravel5]Laravelのサービスプロバイダ

サービスプロバイダの生成

$ php artisan make:provider NazoServiceProvider

という感じで生成。app/Providers/以下に生成される。

サービスプロバイダの登録

config/app.php

          /*
           * Application Service Providers...
           */

以下にnamespaceをどんどん追加する。

サービスプロバイダの遅延ロード

使うか使わないかわからないサービスプロバイダは遅延読み込みさせよう。

|php| protected $defer = true; ||<

サービスプロバイダでやること

まずregister()が呼ばれ、その後にboot()が呼ばれる。boot()は実装しなくてもいい。 register()では、サービスコンテナの登録を行う。 サービスコンテナとか変な名前だけど、要はautoloaderとの対応表だと思えばいい。

|php| $this->app->bind(‘Nantoka’, function() { return ‘hoge’; }); ||< と指定したら、コントローラーで |php| \App::make(‘Nantoka’); // ‘hoge’ ||< とできる。 なんやそれオートロードちゃうやろと思うけど、これがクラスだと |php| $this->app->bind(‘Nantoka’, ‘\App\Service\NantokaService'); ||< で、 |php|

||< とできる。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment