新潟県最大級のポータイルサイトを情報技術を駆使して盛り上げたい方を募集しています。

Laravelで共通関数を簡単に呼び出す

Laravel2

PHPエンジニアの皆さん、Laravel使ってますか?
日本はもちろんのこと、世界的に見てもPHPフレームワークはLaravelの一人勝ち状態が続いています。
シェアが多い=情報が多い=学習コストが安い、とはいえフレームワークである以上は覚えることが多々あります。
そこで今回はfacade、middleware、validation、authなど数多くの便利機能の中から、facade(ファサード)を使った共通関数の実装について解説していきます。
せっかくフレームワークを採用するのですから、ピュアPHPで頑張りたくないですよね?

当記事の読者は以下のような方を対象としています。

  • とりあえずLaravelを始めたい
  • Laravelらしい書き方を覚えたい
  • PHPエンジニアとしてステップアップしたい

まずはうちの構成をご紹介、app配下にLibs(共通関数用に作ったフォルダ)を配置して共通関数群を格納しています。

Utilを業務内容に依存しない汎用関数クラス(日付操作、文字列操作など)、Businessを業務関数クラスとしています。
実際にBusinessクラスのgetReserveCourceSplit関数を呼び出している箇所がこちら。

Businessをインスタンス化することなくそのまま呼び出していますね。
しかもuseによる名前空間指定も省略しています。

実装手順

1.サービスプロバイダに登録する
app/Providors/AppServiceProvidor.phpに追記する方法もありますが、うちでは個別のサービスプロバイダを作成しています。

サービスプロバイダを自作した場合は必ずconfig/app.phpに追記しましょう。

2.ファサードクラスを作成する
app/Facades配下に利用したいクラス名と同名のFacadeを作成します。
ここまで終わればインスタンス化なしでBusinessを呼び出せるようになりますが、もうひと手間加えます。

3.エイリアスを登録する
最後にエイリアスを登録します。
この作業によって名前空間を指定しなくてもBusinessが呼び出せるようになります。

エイリアスまで登録したファサードを利用する場合の書き方は「\エイリアス名::関数名」です。
その結果、いままでこう書いていたものが

use App\Lib\Business;

$Biz = new Business();
$Biz->getReserveCourceSplit();

こう!

\Biz::getReserveCourceSplit();