2020年9月8日 Laravel 8 がリリースされました🙌
Welcome画面はダークモードとライトモードで雰囲気変わりますね🥰
Laravel Jetstream、モデルディレクトリ、モデルファクトリー、マイグレーションスカッシング、レート制限の改善、時間テストヘルパー、動的ブレードコンポーネント等多くの新機能が追加されています。
Laravel 8 はLTSではありません。バグ修正は2021年3月8日、セキュリティ修正は2021年7月8日までのサポートになるのでご注意ください。
Laravel 8 の新機能
(ニュース記事の内容をほぼグーグル翻訳したものです。)
Laravel Jetstream
[Laravel Jetstreamは、以前のバージョンにあった既存のLaravel UIスカフォールドを改善します。
ログイン、登録、メール検証、2要素認証、セッション管理、LaravelによるAPIサポート、チーム管理など、新しいプロジェクトの出発点となります。
モデルディレクトリ
Laravel 8のアプリケーションのデフォルトでは app/Models
ディレクトリが含まれています。
すべてのジェネレータコマンドは、モデルが app/Models
に存在することを前提としています。
ただし、app/Models
ディレクトリが存在しない場合は、app
ディレクトリ内にモデルを保持していると想定します。
モデルファクトリクラス
Eloquentモデルファクトリは、Laravel 8からクラスベースになり、ファクトリ間の関係のサポートが改善されました。
新しく改善されたモデルファクトリを介してレコードを生成するための新しい構文がいかに素晴らしいかについて、あなたは賛同するでしょう。
use App\Models\User;
User::factory()->count(50)->create();
// using a model state "suspended" defined within the factory class
User::factory()->count(5)->suspended()->create();
マイグレーションスカッシュ
アプリケーションに多くのマイグレーションファイルが含まれている場合は、それらを1つのSQLファイルに圧縮できます。
このファイルは、マイグレーションの実行時に最初に実行され、その後、残りのマイグレーションファイルが実行されます。
既存のマイグレーションを圧縮することで、マイグレーションファイルの膨張を減らし、テスト実行中のパフォーマンスを向上させることができます。
レート制限の改善
Laravel 8は、既存のスロットルミドルウェアとの下位互換性をサポートし、はるかに高い柔軟性を提供しながら既存のレート制限機能を改善します。
Laravel 8には、ファサードを介して定義できるレートリミッターの概念があります。
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Support\Facades\RateLimiter;
RateLimiter::for('global', function (Request $request) {
return Limit::perMinute(1000);
});
ご覧のとおり、このfor()
メソッドはHTTPリクエストインスタンスを取得するため、リクエストを動的に制限することを完全に制御できます。
時間テストヘルパー
Laravelユーザーは、優れたCarbon PHPライブラリを介して、時間の変更を完全に制御できました。Laravel 8は、テスト内の時間を操作するための便利なテストヘルパーを提供することで、この一歩をさらに前進させます。
Laravel8の新機能!時間テストヘルパー(タイムトラベル)を使ってみた!
// Travel into the future...
$this->travel(5)->milliseconds();
$this->travel(5)->seconds();
$this->travel(5)->minutes();
$this->travel(5)->hours();
$this->travel(5)->days();
$this->travel(5)->weeks();
$this->travel(5)->years();
// Travel into the past...
$this->travel(-5)->hours();
// Travel to an exact time...
$this->travelTo(now()->subHours(6));
// Return back to the present time...
$this->travelBack();
これらの方法を使用すると、各テストの間に時間がリセットされます。
動的ブレードコンポーネント
実行時にブレードコンポーネントを動的にレンダリングする必要がある場合があります。
Laravel 8には、<x-dynamic-component/>
コンポーネントをレンダリングするための用意がされています。
<x-dynamic-component :component="$componentName" class="mt-4" />
Laravel 8の詳細
これらはLaravel 8の新機能のほんの一部であり、完全なリストを確認するには、Laravel 8リリースノートとアップグレードガイドを確認してください。また、簡単な更新方法が必要な場合は、Laravel Shiftを忘れないでください。