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();