Laravel11がリリースされたので、
どんな変更点があるのかRelease NotesやLaravelDailyの情報を元にまとめてみます。
第一弾です。
基本情報
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.php
とroutes/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は以下
<?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では
<?php
namespace App\Http\Controllers;
abstract class Controller
{
//
}
何も継承してない、、、!!
AuthorizesRequests
とValidatesRequests
がなくなったので、
$this->authorize()
などを利用したい場合は、コントローラーに手動でAuthorizesRequests
を追加すればいけるみたい。
結構使ってたから知れてよかった。。。
では、今回はここまでにします!