この記事に書いてあること
Laravelアプリケーションでヘルパー関数を作成する方法について書いています。
なぜ書いたか?
自作のへルパ関数を追加したいと思って、やり方を調べたら以下のようにcomposer.jsonファイルにヘルパー関数を追加する方法が多く紹介されていました。
"autoload": {
"files": [
"app/helpers.php"
],
}
たしかにこの方法でも追加はできるのですが、へルパ関数を何個も実装したい時にいちいちjsonファイルを追記する可能性が出てきたり、composer dump-autoload
をする必要が出てきたりと面倒くさいなぁと思いました。
あと単純になんか綺麗じゃないなと。
そこで以下の記事を参考にさせていただき、サービスプロバイダとしてへルパ関数を実装することにしました。
美しいへルパ関数の作り方
サービスプロバイダを作成する
artisanコマンドを実行してHelperServiceProviderを作成します。
php artisan make:provider HelperServiceProvider
実行後は、app\Providers
フォルダにHelperServiceProvider.php
が作成されます。
サービスプロバイダのregisterメソッドを編集
HelperServiceProvider.php
の、register()メソッドに以下のコードを記述します。
public function register()
{
$allHelperFiles = glob(app_path('Helpers').'/*.php');
foreach ($allHelperFiles as $key => $helperFile) {
require_once $helperFile;
}
}
上記のPHPコードではapp\Helpers
フォルダに存在するPHPファイルすべてをインクルードしています。
app\Helpers
フォルダ配下のPHPファイルに追加された関数は、コントローラ、モデル、ビューなどの任意の場所で使用することができるようになります。
サービスプロバイダを登録する
今作ったサービスプロバイダを登録していきます。
config\app.phpを以下のように追記します。
/*
* Application Service Providers...
*/
App\Providers\HelperServiceProvider::class, //追記
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
appHelpersディレクトリを作成する
へルパ関数を記述するためのディレクトリを作成します。
このディレクトリ内にへルパ関数を記述したPHPファイルを追加していきます。
app
└ Helpers/
└ ◯◯◯.php
└ ◯◯◯.php
└ ◯◯◯.php
ヘルパ関数の処理を記述したPHPファイルを作成する
今回は、挨拶を返す簡単な関数をapp\Helpers
ディレクトリ内にsay_Hello.php
という名前で新規作成しました。
このファイルには、名前空間を追加する必要はありません。
また、重要な点としてこの関数が先に宣言されているかどうかを確認するためにfunction_exists
メソッドを忘れないようにします。
<?php
if (! function_exists('say_Hello')) {
function say_Hello($yourName)
{
return 'Hello'.$yourName;
}
}
Laravel用の新しいHelperファイルの設定は以上です。
よきLaravelライフを!