3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravel11 アップデートが来たった!!

Posted at

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
{
    //
}

何も継承せず空ファイルになっています。
AuthorizesRequestsValidatesRequests はなくなったのでデフォルトの状態では記述方法が変わっているようです。

モデルには特に変更なし

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

interfaceenumは嬉しい。独自で作っていたものが標準搭載されるようになっている。

その他気になったところ

  • .env 内の database のデフォルトが sqlite になった(たぶん mysql だったと思う)
  • migrations の中に cache テーブルの作成が入っている(cache も DB がデフォルト?)
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?