🗂

Laravel6.x Controller内でのコードの使い回し(共通関数)

2022/02/19に公開

LaravelのControllerでコードを使い回す頻度、多くないですか?

自分は、しょっちゅうあり「コード見ずらいな」と思っていたところ共通関数の言葉が目に飛び込んだ来たので、こちらを試していきます。

laravelでの手順

Laravelで共通関数を使用するには、ある程度の手順を踏まなければいけません。

  1. Composer.jsonに登録
  2. composer dump-autoloadを実行
  3. config/app.phpに追加
  4. app/Libraryに共通関数を作成
  5. 利用したいコントローラでuseする

1. Composer.jsonに登録

Composer.jsonの"autoload"に追加で記述します。

Composer.json
    "autoload": {
        "classmap": [
            "app/Library"
        ]

2. composer dump-autoloadを実行

ターミナルでcomposer dump-autoloadを実行

composer dump-autoload

3. config/app.phpに追加

config/app.phpの'aliases'に追加で記述します。

app.php
    'aliases' => [
      'CloudinaryUpload' => app\Library\CloudinaryUpload::class,
    ]

4. app/Libraryに共通関数を作成

各々、使い回す関数を作成して下さい。自分の場合はCloudinaryにファイルをアップロードする関数です。

CloudinaryUpload.php
<?php

namespace app\Library;

use CloudinaryLabs\CloudinaryLaravel\Facades\Cloudinary;

class CloudinaryUpload
{
  public static function upload( $file ) {
      $upload = Cloudinary::upload ( $file->getRealPath(), [
          "height" => 800,
          "width" => 560,
          "crop" => "fit",
          "border" => "20px_solid_rgb:ffffff",
          "quality" => "auto",
          "fetch_format" => "auto",
      ]);
      return $upload;
  }
}

5. 利用したいコントローラでuseする

Controller.php内でuse App\Library\'ご自分の共通関数';を記述

controller.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Library\CloudinaryUpload;

     public function BookCreate( BookFormRequest $request ) 
     {
     (略)
            $uploaded_img = CloudinaryUpload::upload( $file );
          (略)

以上となります。

最後に

コピペでコードを使い回す時、「これまとめれば楽にならない?」と感じたら、ぜひ試してみて下さい。後々自分自身が楽になりますよ。(エラー修正や仕様変更時、コピペだけだと。。。昔の自分に殺意を抱きますよ)

プログラム言語には様々な事例が存在します。ふと疑問に思った事や出来るかもと感じた事を調べ試して、自身が面白いなと感じたら、また形に残していこうと思います。

Discussion