*当記事はLaravel公式ドキュメントを参考にしています。
サポート期限
Version | PHP (*) | Release | Bug Fixes Until | Security Fixes Until |
---|---|---|---|---|
6 (LTS) | 7.2 – 8.0 | September 3rd, 2019 | January 25th, 2022 | September 6th, 2022 |
7 | 7.2 – 8.0 | March 3rd, 2020 | October 6th, 2020 | March 3rd, 2021 |
8 | 7.3 – 8.1 | September 8th, 2020 | July 26th, 2022 | January 24th, 2023 |
9 (LTS) | 8.0 – 8.1 | February 8th, 2022 | February 8th, 2024 | February 8th, 2025 |
10 | 8.0 – 8.1 | February 7th, 2023 | August 7th, 2024 | February 7th, 2025 |
Laravel9へのアップグレード
アップグレード方法
composer.jsonの中にある以下の2点を書き換え、 ターミナルから composer install を実行します
{
"name": "laravel/laravel",
"type": "project",
"description": "The Laravel Framework.",
〜中略〜
"license": "MIT",
"require": {
"php": "^7.2", → "^8.0.2"へ
"azuyalabs/yasumi": "^2.1",
"barryvdh/laravel-dompdf": "^0.8.5",
"creitive/laravel6-breadcrumbs": "^1.0",
"doctrine/dbal": "^2.9",
"fideloper/proxy": "^4.0",
"freee/freee-accounting-sdk": "^1.0",
"fruitcake/laravel-cors": "^1.0",
"guzzlehttp/guzzle": "~6.0",
"intervention/image": "^2.5",
"laravel/cashier": "^10.5",
"laravel/framework": "^6.0", → "^9.0"へ
"laravel/tinker": "^1.0",
"league/flysystem-aws-s3-v3": "^1.0",
},
"require-dev": {
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^3.0", → "^6.0"へ
"orangehill/iseed": "^2.6",
"phpunit/phpunit": "^8.0",
"staudenmeir/dusk-updater": "^1.1"
},
影響度大(要対応)
PHPバージョン
PHP8.0.2以上でなければ動作しないため、PHP7系をお使いの方はアップグレードが必要になります。
戻り値の型定義
PHP メソッドに戻り値の型定義が必要になるように移行し始めています。
Laravelでは特別な変更は必要ありませんが、もしLaravelのVendorクラスをオーバーライドしている場合は予め戻り値の定義が必要になるので、注意です!
*PHPもだんだんとJAVAやGoのように堅い言語を目指す方向性になってきましたね。
FileSystem
Laravel 9.x は Flysystem Ver1 から Ver3 に移行したので、ここは注意。
Flysystem は、Storage ファサードを介すすべてのファイル操作メソッドに影響します。
特にAWSのS3を使っている方は注意が必要で、以下のように明示的にターミナルからアップデートする必要があります。
composer require --with-all-dependencies league/flysystem-aws-s3-v3 "^3.0"
また、エラーを出すわけではありませんが、ファイル操作について変更があり、put, write, writeStream などの書き込み操作は、デフォルトで既存のファイルを上書きするようになりました。
既存のファイルを上書きしたくない場合は、書き込み操作を行う前に、手動でファイルの存在を確認する必要があります。
影響度中
langディレクトリの変更
Laravel9では、Laravel8以前のresources/langディレクトリがプロジェクトのルートディレクトリ(lang)に配置されるようになりました。
そのため、バリデーションメッセージなど、翻訳ファイルを使っている方はファイルを移動させてくださいね。
Laravel9の新機能
随時更新中・・・
Controller Route Groups
Laravel8→9へのアップデートでルートグループの書き方が改良されました。
具体的にはルートグループにコントローラーを指定するような書き方に変わりました。
Route::group(function () {
Route::get('/orders/{id}', 'OrderController@show');
Route::post('/orders', 'OrderController@store');
});
Laravel8 の時点では各コントローラーメソッドにコントローラー名を書く必要がありました。
しかし、新しいLaravel9ではコントローラークラスを指定しておくと、書くルーティングでコントローラー名を書く必要がなくなります。
use App\Http\Controllers\OrderController;
Route::controller(OrderController::class)->group(function () {
Route::get('/orders/{id}', 'show');
Route::post('/orders', 'store');
});
Full Text Indexes / Where Clauses
執筆中・・・
@checked
bladeテンプレートでデフォルトチェックを入れる @checkedができました。
具体的にはinput type=”checkbox”で条件に応じてデフォルトチェックを入れることができる機能です。
LaravelでNext.jsがサポートされた
Laravel Breeze(Laravel/uiに近い認証パッケージ)とNext.js(React.jsのフレームワーク)をまとめて使えるとのことです。
この機能を使うと、
- フロントエンド:Next.js
- バックエンドAPI:Laravel
といった具合に役割を分けたアプリケーションを比較的簡単に作れるようになります。
そのため、モバイル・Web同時開発をする際にはLaravel側をAPIサーバーとして使うことができ、モバイル開発者としてもメリットのある機能ですね。
新しいヘルパー関数
to_route
to_routeは主にコントローラーで使えるリダイレクトメソッドです。
具体的な使い方としては
to_route('ルート名', 'パラメーター(配列)', 'HTTPステータス')
といったように記述することができます。
必須は第1引数のルート名だけで、パラメーターやHTTPステータス(404や301など)は必要なら書いていただければ大丈夫です。
str
strは文字列を操作するヘルパー関数です。
ヘルパー関数なので、Laravelフレームワーク上でどこでも使うことができます。
使用例は
$string = str('Taylor')->append(' Otwell');
append()は指定した文字列の後ろに文字列を付け足します。↓結果
// 'Taylor Otwell'