Laravel10がリリースされました。バグ修正は 2024-08-06、セキュリティ修正は 2025-02-14 までされます。Laravel11は2024年の1~3月にリリース予定です。
Laravel 10 is now released! | Laravel News
Laravel10では PHP 8.1 以上が要求されます。PHP8.0は 2023-11-26 までセキュリティサポートが続いているので対応して欲しかったですが残念ながら打ち切りです。これは Laravel が依存している Symfony というパッケージのバージョン指定の影響が大きいです。Symfony は Symfony 6.1 から PHP8.1 を要求するようになりました。 Laravel は Symfony 抜きでは成り立たないといえるくらいがっつり Symfony に依存しているので Symfony に歩調を合わせるのは割としょうがない感じです。
Symfony 6.1 will require PHP 8.1 (Symfony Blog)
Laravel10 では Laravel 内のソースコードの型定義が厳密化しました。最近の PHP は従来の緩やかさをいくらか維持しつつ多彩な型の表現とより型安全なプログラミングができる様に変化しています。Laravel9 まではわりとこの辺りがちゃんぽんでコメントで記述された型に一部誤りが含まれているぐらいだったのですが Laravel10 で正確に言語機能で明文化されました。何かよくわからない色々なものが流れてくるから流れてくる可能性があるものを把握するために Laravel の内部実装を読みに行く、といったことが随分減りそうです。
新しい機能として Process があります。これは exec などのコマンド実行をサポートする機能です。内部実装としては Symfony の Process を Laravel 内でいい感じに取り扱っている感じです。例えば次の引用の様に使えます。
// @see https://laravel.com/docs/10.x/releases use Illuminate\Support\Facades\Process; $result = Process::run('ls -la'); return $result->output();
コマンド実行は特にインジェクションされたときに危険ですし、非同期実行や出力制御が面倒なので積極的に Laravel 側に任せたいところです。私的には並列実行、直列実行の部分が気になります。
Laravel Pennant というパッケージが増えました。これはフィーチャーフラグを制御するためのパッケージです。フィーチャーフラグとは端的に言うと、プログラム内のコードで機能のON/OFFを切り替えるためのフラグです。すべてのユーザーに同じプログラムを使用してもらいながらベータテスターのみに新しい機能を公開するためのフラグとかそんな感じです。
Laravel Pennant | Laravel News
Laravel Pennant – Laravel – The PHP Framework For Web Artisans
今回のバージョンアップによる破壊的な変更はほぼ PHP8.1 要求に集約されます。バージョンアップにかかる時間は主にLaravel の上に乗っているコードの規模と使っている記法次第です。場合によっては特に対応の必要がなく、テストをしただけで終わりになるやもしれません。
Upgrade Guide – Laravel – The PHP Framework For Web Artisans#Database Expressions