Laravelは便利な機能を数多く持っていますが、どうしても足りない場合は、ヘルパ関数のように汎用性のある共通関数を作りたくなります。
しかし、共通クラスをどこに書いてどのように呼び出すか悩んでいる方に、(マイ)ベストプラクティスをご紹介します!
目次
ライブラリとして追加する
結局はどこに書いても同じなのですが、フレームワークとは別に自分が作ったものとして管理したいので、
1 |
app/Libraries |
というフォルダを作成してその中に作っていきます。
(app/libs
でも良いかな?フォルダ名は任意です!)
この記事では、他の方が書いてあるような、ファサード作ったり、サービスプロバイダ作るようなややこしいことをしません。
やってもconfig/app.php
のエイリアスに追加するくらいなら良いと思いますが、今回はそれすらも省きます。
Qiita
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9TGFyYXZlbCVFMyU4MCU4MCVFNSU4NSVCMSVFOSU4MCU5QSVFOSU5NiVBMiVFNiU5NSVCMCVFNCVCRCU5QyVFNiU4OCU5MCZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9ODAyYWIzNzIyMTIxOWJlYWVmZWEyYzExZTNkY2ZjMWY&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBkYXRlX3NrJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1mZWE5MDFmMjBkNWEyNTE3M2EwZjE0MTEwODI1ODllYg&blend-x=142&blend-y=486&blend-mode=normal&s=3956b7b19203ce657d8eb4e287d0edea)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9TGFyYXZlbCVFMyU4MCU4MCVFNSU4NSVCMSVFOSU4MCU5QSVFOSU5NiVBMiVFNiU5NSVCMCVFNCVCRCU5QyVFNiU4OCU5MCZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9ODAyYWIzNzIyMTIxOWJlYWVmZWEyYzExZTNkY2ZjMWY&mark-x=142&mark-y=57&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBkYXRlX3NrJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1mZWE5MDFmMjBkNWEyNTE3M2EwZjE0MTEwODI1ODllYg&blend-x=142&blend-y=486&blend-mode=normal&s=3956b7b19203ce657d8eb4e287d0edea)
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
して使う、それだけです。
なぜ、このように単純な書き方にならないのだろうか、何か弊害があるのだろうかわかりません。
もし知っていればコメントください。
コメント