Laravel5 共通クラス(汎用関数)をつくる

共通クラスの作成

なんかむかしincludeしてた時代ありましたね。今もしてますが。Laravel5ではLaravel4とちょっとやり方違うみたいです。手順としては、

  1. 共通関数をつくる。
  2. Composer.jsonに登録する。
  3. コマンドでオートローダーに反映。
  4. config/app.phpにエイリアスとして追加。
  5. クラス名::メソッド名()で呼び出す。

結構めんどうくさい感じがしたけど、筋が通っていてつかいやすいです。

共通関数をつくる

共通関数はどこにつくっても大丈夫です。過去の例にならいつつapp/Library/BaseClass.phpとして作成したいと思います。ディレクトリとファイルを手で作成します。artisanでなんかできるかなと思ったけど、なんかコマンドはないっぽい。
こんな感じで手書きします。

<?php
// app/Library/BaseClass.php
namespace app\Library;

class BaseClass
{
    public static function test() {
        return 'BaseClass!';
    }
}

Composer.jsonに登録する

composer.jsonにオートロードのclassmapに追加します。
ここでは読み込む名前空間(つまりディレクトリ)だけを登録します。

.....
"autoload": {
"classmap": [
    "database",
    "app/Library", ←これ
],
.....

コマンドでオートローダーに反映

php composer.phar dump-autoload

余談ですが、Composerにこういうこと言われる時があります。
Warning: This development build of composer is over 60 days old. It is recommended to update it by running “composer.phar self-update” to get the latest version.その際は、

php composer.phar self-update

を実行してください。
(しかもハングアップしたか?というぐらい時間がかかります。)

config/app.phpにエイリアスとして追加

app/config/app.phpを開いて、いちばん下の方にあるクラスエイリアスに追加します。今度はクラス名を明示的に書かないとダメです。

'aliases' => [
....
/* originals */
'BaseClass' => 'app\Library\BaseClass', // 追加
....

設定自体はこれで終わり。ここまでで共通クラスとして使えるようになっております。

共通クラスを使う

利用したいコントローラで以下を記述します。
これでいちおうオートローダーから読み込まれているのでuseしたクラスが使えるようになっているはず。

use App\Library\BaseClass;

クラスとメソッドを使うときは、使いたいコントローラのメソッド内で、

$return = BaseClass::test();
var_dump($return);

という感じになります。
あるいは、

$base = new BaseClass();
var_dump($base->test());

こんな感じでnewしても使えるかと思います。「BaseClass!」が返ってきたらOKです。


laravel5.2 オリジナルの共通処理や関数ライブラリを作る

Last update: 2017.09.15 (金)