Laravelは便利な機能を数多く持っていますが、どうしても足りない場合は、ヘルパ関数のように汎用性のある共通関数を作りたくなります。
しかし、共通クラスをどこに書いてどのように呼び出すか悩んでいる方に、(マイ)ベストプラクティスをご紹介します!
目次
ライブラリとして追加する
結局はどこに書いても同じなのですが、フレームワークとは別に自分が作ったものとして管理したいので、
1 |
app/Libraries |
というフォルダを作成してその中に作っていきます。
(app/libs
でも良いかな?フォルダ名は任意です!)
この記事では、他の方が書いてあるような、ファサード作ったり、サービスプロバイダ作るようなややこしいことをしません。
やってもconfig/app.php
のエイリアスに追加するくらいなら良いと思いますが、今回はそれすらも省きます。
Laravel 共通関数作成 - Qiita
コントローラー等で使いたい共通関数の作成方法。app/ 直下にフォルダを作成しその中にファイルを作成。今回はLibraryフォルダを作成した。<?phpnamespace App\Librar…
独自クラスを作成する
コントローラのように普通にクラスを作成していきます。
例として、
1 |
app/Libraries/CommonFunctions.php |
というファイル名で作成します。
内容は以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php namespace App\Libraries; class CommonFunctions { /** * Invokes the common functions * * @param string $data * @return boolean */ public static function is_foo($data) { return ($data == 'foo') ? true : false ; } } |
文字列が’foo’であるかを調べる単純な関数ですね。
共通関数を呼び出す
次に呼び出しです。
コントローラで呼び出してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use app\Libraries\CommonFunctions; class UserController extends Controller { /** * Display a listing of the resource. * * @return IlluminateViewView */ public function index() { $cf = new CommonFunctions; $data = $cf->is_foo('foo'); return view('index', compact('data')); } } |
ポイントも何もありませんね。
普通にuse
して使う、それだけです。
なぜ、このように単純な書き方にならないのだろうか、何か弊害があるのだろうかわかりません。
もし知っていればコメントください。
コメント