【Laravel】Laravel11の機能を解説

laravelアイキャッチ Laravel

こんにちは、かつコーチです。

2024年2月にLarave11がリリースされました。

今回はそのLaravel11の機能について解説します。

Laravel 11 は、これまでのバージョンから大きな進化を遂げています。

特に、ファイル数の削減や、コードベースの整理、

さらにはパフォーマンスと開発者体験の向上を目的とした多くの改善が行われました。

Laravel 11では、よりシンプルでモダンなフレームワークに進化し、

開発者が効率よくアプリケーションを構築できるように調整されています。

以下、Laravel 10からLaravel 11への主な追加機能と変更点について詳しく解説します。

PHP 8.2以上のサポート

Laravel 11は、PHP 8.2を最低要件としています。

PHP 8.2では、readonlyクラスやnull型のサポート、

改善された型システムなどの新しい機能が含まれており、

これらの機能をLaravel 11で最大限に活用できるようになっています。

変更点:

  • Laravel 11は、PHP 8.2を最低要件とし、最新のPHP機能に対応。
  • 開発者はreadonlyクラスや新しい型機能を利用可能。
class User
{
    public readonly string $email;

    public function __construct(string $email)
    {
        $this->email = $email;
    }
}

コントローラー、モデル、ファクトリの簡素化

Laravel 11では、フレームワークのデフォルトで生成されるコントローラーやモデル、

ファクトリが大幅に簡素化されました。

以前のバージョンに比べて余分なコードが削減され、ファイル数も減少しています。

これにより、新規プロジェクトのコードベースがさらにクリーンで軽量になりました。

変更点:

  • デフォルトで生成されるコントローラーやモデルがシンプル化。
  • 必要最低限のコードのみが生成され、ファイル数が削減。
// Laravel 11 では不要なコメントや boilerplate が削除されています
class UserController extends Controller
{
    public function index()
    {
        return view('users.index', ['users' => User::all()]);
    }
}

Bladeコンポーネントの自動検出

Laravel 11では、Bladeコンポーネントの自動検出が強化されました。

開発者はBladeコンポーネントを自動的に発見・登録できるため、

手動で設定ファイルに追加する必要がなくなり、

フロントエンドの開発がより直感的で効率的になりました。

変更点:

  • Bladeコンポーネントの自動検出が追加され、手動登録の必要が減少。
  • コンポーネントの使用がより簡単に。
<x-alert type="success" message="Operation completed successfully!" />

フレームワークファイルの削減

Laravel 11は、ファイル構成がよりシンプルに整理され、

プロジェクトの初期ファイル数が大幅に削減されています。

これにより、セットアップ後のプロジェクトがクリーンで見通しがよくなり、

管理が容易になりました。

変更点:

  • フレームワーク全体のファイル数が削減され、デフォルトプロジェクトが軽量化。

デフォルトのシングルトンルートのサポート

Laravel 11では、ルート定義において、

リソースのシングルトンルートがデフォルトでサポートされるようになりました。

これにより、単一のリソース(例えば、ユーザープロファイルのような単一のエンティティ)を

簡単に扱うことが可能になっています。

変更点:

  • シングルトンリソースのルート定義がサポートされ、リソース操作がより簡単に。
Route::singleton('profile', ProfileController::class);

HTTPクライアントの改善

Laravel 11では、Httpファサードに新機能が追加され、

リトライやタイムアウト処理などがより柔軟に設定できるようになりました。

また、HTTPリクエストのテストサポートも改善され、モックの作成が簡単になっています。

変更点:

  • HTTPクライアントにおけるリトライやエラーハンドリングが強化。
  • テスト時のHTTPリクエストのモックが容易に。
Http::retry(3, 100)->get('https://example.com');

Upsertの改良

Laravel 11では、データベース操作におけるupsertメソッドが改善され、

複数のカラムに対するより柔軟な操作が可能になりました。

これにより、データの重複を避けつつ、効率的にレコードを更新できるようになります。

変更点:

  • 複数カラムに対応したupsertメソッドの柔軟性が向上。
User::upsert([
    ['email' => 'test@example.com', 'name' => 'Test'],
    ['email' => 'john@example.com', 'name' => 'John'],
], ['email'], ['name']);

CLIのインタラクティブモード

Laravel 11では、Artisan CLIコマンドがインタラクティブなモードに対応し、

コマンド実行中に必要なオプションや引数をプロンプトで入力できるようになりました。

これにより、CLI操作がよりユーザーフレンドリーになりました。

変更点:

  • CLIコマンドでのインタラクティブな入力プロンプトがサポートされ、操作が簡単に
php artisan make:model
# 実行中に必要な引数をプロンプトで入力

シンプルなサービスコンテナの依存注入

サービスコンテナの依存注入がさらに簡素化され、

コントローラーやその他のクラスで依存を自動的に解決する機能が強化されました。

変更点:

  • サービスコンテナの依存注入が簡素化され、コードの記述が減少。
class UserController extends Controller
{
    public function __construct(private UserService $userService)
    {
    }

    public function index()
    {
        return $this->userService->getAllUsers();
    }
}

その他の改善

  • アプリケーションのパフォーマンス向上: Laravel 11では、内部パフォーマンスがさらに最適化され、アプリケーションの動作速度が向上しました。
  • システム要件のアップデート: PHP 8.2に対応した最新のシステム機能をフル活用できるように、フレームワーク全体が見直されています。

まとめ

Laravel 11は、ファイル数の削減やコードの簡素化、

最新のPHP 8.2機能を活用したパフォーマンス向上が目立つアップデートとなっています。

開発者がより直感的かつ効率的にコードを書くための改善が多数含まれており、

これによりLaravelのエコシステムがさらに強力で使いやすくなっています。

タイトルとURLをコピーしました