Laravel11 アップデート
Laravel11 がリリースされたので色々な記事を参考に自分なりにまとめていきます。
ReleaseNote : https://laravel.com/docs/11.x/releases
前提情報
PHP8.2 以上
スリム化された構成
新しいアプリケーション構造は、Laravel 開発者がすでによく知っている概念の多くを保持しながら、より無駄がなく、より現代的なエクスペリエンスを提供することを目的としています。
app/
├── Http/
│ └── Controllers/
│ └── Controller.php
├── Models/
│ └── User.php
└── Providers/
└── AppServiceProvider.php
bootstrap/
├── app.php
└── providers.php
routes/
├── console.php
└── web.php
※今回は上記の 7 ファイルについて記述していきます。
コントローラは何も継承しない
<?php
namespace App\Http\Controllers;
abstract class Controller
{
//
}
何も継承せず空ファイルになっています。
AuthorizesRequests
や ValidatesRequests
はなくなったのでデフォルトの状態では記述方法が変わっているようです。
モデルには特に変更なし
ver10 では $casts
であったが ver11 では casts()
と関数型に変更されている。用途は同じだと思いますが、検証が必要ですね。
サービスプロバイダは1つに統一
ver10 ではAppServiceProvider
, AuthServiceProvider
, BroadcastServiceProvider
, EventServiceProvider
, RouteServiceProvider
と 5つのサービスプロバイダがあったが、ver11 からは AppServiceProvider.php
の1つとなり、削除されたファイルの機能は bootstrap/app.php
に組み込まれたようです。
サービスプロバイダを作成した時には今まで、手動で config/app.php
に追加していたが、make コマンドで作成していたが、自動的に bootstrap/providers.php
に追加されるとのこと。
一番変わった bootstrap/app
今まではほとんど触る事のなかった、このファイルですが機能が増えています。
bootstrap/app.php
を使って、アプリケーションのルーティング・ミドルウェア・サービスプロバイダ・例外処理などのカスタマイズができるようです。今まで、Kernel.php で行っていた Middleware の設定も bootstrap/app.php
で行う。
<?php
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
//
})
->withExceptions(function (Exceptions $exceptions) {
//
})->create();
バッチ処理のスケジュールを routes/console.php に集約
今まで app/Console/Kernel.php
に記載していたスケジュールさえ r たタスクを routes/console.php
にまとめて定義することができるようになりました。
<?php
use Illuminate\Foundation\Inspiring;
use Illuminate\Support\Facades\Artisan;
Artisan::command('inspire', function () {
$this->comment(Inspiring::quote());
})->purpose('Display an inspiring quote')->hourly();
新しい make:xxxx コマンド
php artisan make:enum
php artisan make:class
php artisan make:interface
interface
とenum
は嬉しい。独自で作っていたものが標準搭載されるようになっている。
その他気になったところ
- .env 内の database のデフォルトが sqlite になった(たぶん mysql だったと思う)
- migrations の中に cache テーブルの作成が入っている(cache も DB がデフォルト?)