26
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravel11アップデート内容①【アプリケーション構造】

Posted at

Laravel11がリリースされたので、
どんな変更点があるのかRelease NotesLaravelDailyの情報を元にまとめてみます。

第一弾です。

基本情報

Laravel 11.x には、最小 PHP バージョン 8.2 が必要

構成のスリム化

新しいアプリケーション構造は、Laravel 開発者がすでによく知っている概念の多くを保持しながら、より無駄がなく、より現代的なエクスペリエンスを提供することを目的としています。

というように、以下のようにフォルダ構成をスリムにしたようですね。

app/
├── Http/
│   └── Controllers/
│       └── Controller.php
├── Models/
│   └── User.php
└── Providers/
    └── AppServiceProvider.php
bootstrap/
├── app.php
└── providers.php
config

削除されたフォルダは以下

  • app/Console
  • app/Exceptions
  • app/Http/Middleware

Bootstrap Fileが重要

ここが結構変わりましたね。
bootstrap/app.phpからアプリケーションのルーティング、ミドルウェア、サービスプロバイダー、例外処理のカスタマイズができるとのこと。
今まで色んな場所に散らばっていたコアなファイルを統合できる、っていうのが「より無駄がない」っていうところにも繋がってくるのかなと思いました。

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();

Service Providers

今まで5ファイル存在したServiceProviderがAppServiceProviderのみとなり、
削除されたファイルの機能はbootstrap/app.phpに組み込まれたようです。

ServiceProviderを作成したら、手動でconfig/app.phpに追加していましたが、Laravel11ではbootstrap/app.phpに追加することになるようです。

makeコマンドで作ったら自動で追加されるのでコマンドを使ったほうがいいですね。

// makeコマンド例
php artisan make:provider SampleServiceProvider

Routing

こちらも他と同様にroutes/channel.phproutes/api.phpファイルが削除されています。
ただ、artisanコマンドを用意してくれているので作りたかったらサクッと作れます。

php artisan install:api
php artisan install:broadcasting

Middleware

今までは9つのMiddlewareが存在していましたが、これらはフレームワーク自体に移動されているようで、
スリム化を実現できたようですね。
設定自体は今までのものを使えるようになっているとのこと。すごいや。

src/Illuminate/Foundation/Configuration/Middleware.php置いておきます。

独自で作成したものは今までKernel.phpに登録していましたが、こちらもbootstrap/app.phpに登録します。

->withMiddleware(function (Middleware $middleware) {
    $middleware->validateCsrfTokens(
        except: ['stripe/*']
    );

    $middleware->web(append: [
        EnsureUserIsSubscribed::class,
    ])
})

Controller

Laravel10は以下

Laravel10
<?php

namespace App\Http\Controllers;

use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;

class Controller extends BaseController
{
    use AuthorizesRequests, ValidatesRequests;
}

Laravel11では

laravel11
<?php

namespace App\Http\Controllers;

abstract class Controller
{
    //
}

何も継承してない、、、!!

AuthorizesRequestsValidatesRequestsがなくなったので、
$this->authorize()などを利用したい場合は、コントローラーに手動でAuthorizesRequestsを追加すればいけるみたい。

結構使ってたから知れてよかった。。。

では、今回はここまでにします!

26
7
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
26
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?