Laravel10がもうすぐリリース

Laravel10がもうすぐリリース

年の暮れ、年明け、今に至るまでとても忙しく何度も禁煙をやめようと思いました。
2023年も禁煙を続けられております、エンジニアの柿添です。
今年も健康のため禁煙を続けたいと思います。

Laravelの次期バージョン

Laravel の次期バージョンである v10 は、
2023年2月にリリースが予定されており、
Laravelの次のメジャーバージョンとなります。

実際は2023年2月7日予定でしたが、
執筆現在もまだリリースされておりません。

Laravel10のリリースはいつになるのでしょうか?

Laravel10のリリースはどうやら来週のようですね。

Laravelの今後のバージョンアップ予定

  • Laravel 10: 2023 年 2 月
  • Laravel 11: 2024 年 2 月

が予定されております。

Laravel 10 のバグ修正は 2024年8月6日まで、
セキュリティ修正は 2025年2月4日までの提供予定です。

Laravel10のドキュメント

Laravel v10 Document
Laravel v10 Upgrade

Laravel10の対応PHPバージョン

Laravel 10は PHP 8.1.0以上が必要です
Laravel 10は PHP 8.0.x以下のサポートを終了します

Laravel 10 で PHP8.x のサポートを終了します。
必要な最小バージョンは PHP^8.1です。

10.x と 9.xを比較すると、readonlyプロパティなどのPHP^8.1.x の機能が確認できます。

Laravel 10 スケルトンコードにネイティブ型宣言が追加

Laravel10ではアプリケーションのすべてのスケルトンメソッドにタイプヒントと戻り値の型が追加される予定で、
フレームワークレベルでの下位互換性を損なうことなく、最新の PHP 型ヒント機能を Laravel プロジェクトにもたらす方法で、型が追加されているとのこと。

C-limber システム事業部は戻り値までしっかり書いているはずなので慣れ親しんだものかと思います。

  • Return types
  • Method arguments
  • Redundant annotations are removed where possible
  • Allow user land types in closure arguments
  • Does not include typed properties

ex: スケルトンメソッドの戻り値の型がarrayである場合、ネイティブ型では不可能な場合に、型をより明確にするために注釈が存在する。

/**
 * Get the host patterns that should be trusted.
 *
 * @return array<int, string>
 */
public function hosts(): array
{
    return [
        'laravel.test',
    ];
}

上記の例では、IDE は配列の形状を認識できます。
さらに、Laravel10よって生成されるすべてのコードは、上記例同様の 型ヒント ガイドラインに従います。
そのため、makeコマンドを使用してファイルを生成すると、上記と同様の ネイティブ型ヒント が出力されます。

Laravel 10 Laravel Pennant リリース

フィーチャーフラグを簡単にを追加するファーストパーティパッケージになります。
このフィーチャーフラグとは、コードを変更することなく、実行時に機能を有効化または無効化するためのものです。

例えば、ある機能を本番環境の一部のユーザーだけにデプロイしたい場合や A/B テストなどに最適です。
また利用しやすい2つのドライバを選択できます。

  • すぐに使用できるインメモリarrayドライバ
  • 永続的な機能ストレージ用のdatabaseドライバ

定義は Feature::define method: で簡単に可能です。

use Laravel\Pennant\Feature;
use Illuminate\Support\Lottery;

Feature::define('new-onboarding-flow', function () {
    return Lottery::odds(1, 10);
});

フィーチャーを定義すると、現在のユーザーがそのフィーチャーにアクセスできるかどうかを簡単に判断することができます。

if (Feature::active('new-onboarding-flow')) {
    // ...
}
@feature('new-onboarding-flow')
    <div>
        <!-- ... -->
    </div>
@endfeature

Laravel 10 では呼び出し可能な検証ルールがデフォルトに

Laravel 10 以降、Invokable Validation Ruleがデフォルトになりました。

Laravel 9以前

# Laravel 9 creates a rule class that implements the
# Illuminate\Contracts\Validation\Rule interface
artisan make:rule Uppercase

# Laravel 9 flag to create an invokable and implicit rule
artisan make:rule Uppercase --invokable
artisan make:rule Uppercase --invokable --implicit

Laravel 10以降

# Laravel 10 creates an invokable rule by default
artisan make:rule Uppercase

# Laravel 10 implicit rule
artisan make:rule Uppercase --implicit

Laravel 10 での テスト プロファイル オプション

laravel 10 に追加された新機能である --profile
遅いテストを簡単に見つけられるようにするオプションです。

--profile オプションは、テストを高速に保ち、遅いテストを修正するか、
それらをより適切にグループ化して、実行をスキップするのに役立ちます。

Laravel 9 からの非推奨

Laravel 9 で非推奨とマークされたメソッドは、Laravel 10 で削除されています。

最後に

破壊的な更新はないかと思います。

laravel new <your-project-name> --dev

で先に触れておくのも良いかもしれません。

Related article

おすすめ関連記事