Laravelのカスタムサービスプロバイダーの作り方

2018.5.31 (木)

Laravel5 共通クラス(汎用関数)をつくるでは比較的少量の場合というか基礎的な考え方みたいなものなので実践ではあまり役に立たない場合が多いかも。大きなアプリケーションになってくるとこれだと全然足りないわけです。
なのでここではサービスプロバイダーとして複数のクラスを一括で共通で扱える方法を紹介します。

HelperServiceProviderの作成

サービスプロバイダーを作成します。

php artisan make:provider HelperServiceProvider

作成したHelperServiceProviderのregisterメソッドを以下のようにします。

public function register()
{
    foreach (glob(app_path().'/Helpers/*.php') as $filename){
        require_once($filename);
    }
}

app/Helpers/*以下のphpファイルをすべて読み込むという動作。
そしてサービスプロバイダーの登録をしておきます。
config\app.php

'providers' => [
    ...
    App\Providers\HelperServiceProvider::class,
    ...
],

Helperクラスの作成

先程のapp/Helpers/*以下にhelperクラスを作成します。ここは手動でいいはず。

<?php

namespace App\Helpers;

class Helper
{
    /**
     * XXXする関数
     *
     * @param string $value
     * @return string
     */
    public static function xxx($value)
    {
        // 処理
        return $value;
    }
}

config/app.phpのalias配列へクラスを追加し、エイリアスの登録をします。フルパスで呼んでしまうのだったらこれやらなくてもいいです。
でもuse Helper;だけで使えるようになるので便利です。

'alias' => [
    ...
    'Helper' => App\Helpers\Helper::class,
    ...
],

使ってみる

使いたいコントローラでuseします。

use Helper;

今回はスタティックなので、使いたいメソッド内で、

$value = Helper::xxx('Hello world!!');

Bladeの中では、

<p>{{ Helper::xxx('Hello world!!') }}</p>

これで動けばOKです。
あとは、app/Helpers/*にクラスを追加して、config/app.phpにエイリアスを追加していけばいろいろ使えます。


https://s8a.jp/laravel-custom-helper