シンプルなサービスプロバイダーを作成する


service providers

 悩み事

サービスプロバイダーを作りたいが、どうしたらいいのかわからない

 解決方法

最も簡単なサービスプロバイダーを作成してみましょう

そしてそこに機能を追加します

まず、サービスプロバイダーを実装する為のファイルを作成します
コーディング規約にPSRを利用している場合は、app/MyApp/Providersの様に作成するか、
または規約に沿っている形であればどこに置いても構いません

PSR以外の規約や、classmap等を利用されている場合は、
既存のフォルダ内に作成するか、任意のディレクトリを作成してcomposer.json等に追記してください

"autoload": {
    "classmap": [
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php",
        "作成したディレクトリ"
    ]
},

この場合、

$ composer dump-autoload

を必ず実行しましょう
PSR利用の場合はdump-autoloadは不要です。

<?php
namespace MyApp\Providers;

use Illuminate\Support\ServiceProvider;

class TestServiceProvider extends ServiceProvider
{

    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

次に、app/config/app.phpproviders[]配列に今作成したクラスを追加します

    'providers' => [
        'MyApp\Providers\TestServiceProvider',
    ],

これだけです!これでサービスプロバイダーが有効になります

 アドバイス

紹介したこのサービスプロバイダーは何も実装していないので、何もしません

Laravelによってregister()メソッドが実行されますが、何も起こりません
例外や、何か出力される様な処理を実装する事で、期待通りに実行されるという事が確認できます

ポイントとしては、これがサービスプロバイダーの一番ベーシックな部分と云う事です
依存の注入(Iocコンテナに登録したり)や、フィルター、または独自のバリデート、コマンドなど
自由に定義する事ができます


Author:Chuck Heintzelman

Editor and Translator:Yuuki Takezawa