Laravelは便利な機能を数多く持っていますが、どうしても足りない場合は、ヘルパ関数のように汎用性のある共通関数を作りたくなります。
しかし、共通クラスをどこに書いてどのように呼び出すか悩んでいる方に、(マイ)ベストプラクティスをご紹介します!
ライブラリとして追加する
結局はどこに書いても同じなのですが、フレームワークとは別に自分が作ったものとして管理したいので、
app/Libraries
というフォルダを作成してその中に作っていきます。
(app/libs
でも良いかな?フォルダ名は任意です!)
この記事では、他の方が書いてあるような、ファサード作ったり、サービスプロバイダ作るようなややこしいことをしません。
やってもconfig/app.php
のエイリアスに追加するくらいなら良いと思いますが、今回はそれすらも省きます。
独自クラスを作成する
コントローラのように普通にクラスを作成していきます。
例として、
app/Libraries/CommonFunctions.php
というファイル名で作成します。
内容は以下の通りです。
<?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’であるかを調べる単純な関数ですね。
共通関数を呼び出す
次に呼び出しです。
コントローラで呼び出してみましょう。
<?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
して使う、それだけです。
なぜ、このように単純な書き方にならないのだろうか、何か弊害があるのだろうかわかりません。
もし知っていればコメントください。
- Original:https://minory.org/laravel-libraries.html
- Source:Minory
- Author:管理者