【Laravel】IDE を使ったキーとクラスの紐づけを後から探しやすくする方法

 Laravel ではミドルウェアの定義と呼出し、コントローラのアクションとURLといったものを紐づけます。この時クラス名を使うと後にどれが何をしているか探しやすくなるという小技を紹介します。具体的には次です。

<?php

use App\Http\Controllers\AdminBrowserAPI\Admin\AdminController;
use App\Http\Controllers\AdminBrowserAPI\Auth\LoginController;

// ルーティングで紐づけるコントローラクラスを ::class で記述する
Route::name('auth.')->group(static function () {
    Route::post('login', LoginController::class.'@login')->name('login');
    Route::post('logout', LoginController::class.'@logout')->name('logout');
});

// 一アクションコントローラを使うならば @ 以下も不要
// @see https://readouble.com/laravel/8.x/ja/controllers.html?header=シングルアクションコントローラ
// 複雑な処理をコントローラでどうこうする時にコントローラ内で処理がまとまっていることを保証するためによくつかいます。
// また利点としてはファイルが増える代わりにどこで何が使われているか一見しやすくもなります。
Route::get('member/search', MemberSearchController::class)->name('member.search');

// app/Http/Kernel.php
namespace App\Http;

use App\Http\Middleware\Authenticate;
// 省略

class Kernel extends HttpKernel
{
    /**
     * The application's route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array
     */
    protected $routeMiddleware = [
        'auth'             => Authenticate::class,
        'auth.basic'       => AuthenticateWithBasicAuth::class,
        'bindings'         => SubstituteBindings::class,
        'cache.headers'    => SetCacheHeaders::class,
        'can'              => Authorize::class,
        'guest'            => RedirectIfAuthenticated::class,
        'password.confirm' => RequirePassword::class,
        'signed'           => ValidateSignature::class,
        'throttle'         => ThrottleRequests::class,
        'verified'         => EnsureEmailIsVerified::class,
    // ↓独自定義のミドルウェア
    // ルーティング内でミドルウェアを呼び出すときも ::class を使えるようにします。
        SetLocale::class   => SetLocale::class,
    ];
    
/**********
 * routes/web.php
 ************/
Route::middleware([
    SetLocale::class // クラス文字列で使うミドルウェアを定義
])->any('hoge', static fn () =>view('sample_view'));

 

 この様にすると次の動画の様に IDE の機能(例では PhpStorm の Ctrl+B)によって使っている定義元へジャンプできるようになり、便利です。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG