🗂
Laravel6.x Controller内でのコードの使い回し(共通関数)
LaravelのControllerでコードを使い回す頻度、多くないですか?
自分は、しょっちゅうあり「コード見ずらいな」と思っていたところ共通関数
の言葉が目に飛び込んだ来たので、こちらを試していきます。
laravelでの手順
Laravelで共通関数を使用するには、ある程度の手順を踏まなければいけません。
- Composer.jsonに登録
- composer dump-autoloadを実行
- config/app.phpに追加
- app/Libraryに共通関数を作成
- 利用したいコントローラで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