LoginSignup
59

More than 3 years have passed since last update.

Laravel 8 Release !

Last updated at Posted at 2020-09-08

ScreenShot 2020-09-09 1.06.05.png

ScreenShot 2020-09-12 4.16.24.png

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を忘れないでください。

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
59