ホームページ >バックエンド開発 >PHPチュートリアル >Laravel テスト、モデル ID、認可における飛躍的な進歩

Laravel テスト、モデル ID、認可における飛躍的な進歩

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-14 07:44:43611ブラウズ

Laravel  A Leap Forward in Testing, Model IDs, and Authorization

主要な PHP Web アプリケーション フレームワークである Laravel は、開発者の生産性とコードの柔軟性を向上させるエキサイティングな新機能と改善点を満載したバージョン 11.30 をリリースしました。 主要なアップデートを見てみましょう。

新しいヘルパーによる効率化されたテスト: withDefer() および withoutDefer()

Laravel 11.30 では、Tim MacDonald の厚意により withDefer()withoutDefer() が導入されました。これらは、遅延呼び出しを利用するコードをテストする場合に非常に貴重であり、正確なアサーション制御のために遅延を選択的に無効にすることができます。

withoutDefer() を使用した例:

<code class="language-php">// This won't work correctly
User::create(/* ... */);
$this->assertAgainstSomeDeferredOutcome();

// This works as intended
$this->withoutDefer();
User::create(/* ... */);
$this->assertAgainstSomeDeferredOutcome();</code>

テスト中の遅延操作に対する制御が強化されたことで、より信頼性が高く正確なテスト結果が得られます。

HasUniqueStringIds 特性を使用したカスタムの一意の文字列 ID

Luke Kuzmish の貢献である HasUniqueStringIds トレイトにより、開発者は resolveRouteBindingQuery() を変更せずにカスタムの一意の文字列 ID をルート キーとして利用できるようになります。 これは既存の HasUuidsHasUlid の特性を拡張し、ID 生成の柔軟性を高めます。

カスタムの一意の文字列 ID の実装:

<code class="language-php">trait HasTwrnsTrait
{
    use HasUniqueStringIds;

    public function newUniqueId()
    {
        return (string) Twrn::new();
    }

    protected function isValidKey($value): bool
    {
        return Twrn::isValid($value);
    }
}</code>

この機能により、標準的な Laravel の実践とシームレスに統合しながら、高度にカスタマイズされたモデル識別子が可能になります。

直接列挙型サポートによる拡張認証

Johan van Helden による AuthorizesRequests トレイトの更新により、Laravel による最近のフレームワーク全体での Enum の採用に合わせて、サポートされた enum が直接受け入れられるようになりました。

authorize() メソッドで列挙型を使用する:

<code class="language-php">enum DashboardPermission: string
{
    case VIEW = 'dashboard.view';
}

// Previously
public function index(): Response
{
    $this->authorize(DashboardPermission::VIEW->value);
    // ...
}

// Now
public function index(): Response
{
    $this->authorize(DashboardPermission::VIEW);
    // ...
}</code>

この単純化により、認可コードの型の安全性と可読性が向上します。

その他の重要な機能強化

バージョン 11.30 には以下も含まれます:

  • Blade::directive パラメータを使用して $bind 機能を拡張しました。
  • trans_choice() 区切り文字を含む翻訳置換に関する | の問題を解決しました。
  • 特定のシナリオで exists() の代わりに count() を使用したパフォーマンスの最適化。
  • カスタム Postgres オペレーターのサポートを追加しました。
  • ベクター列タイプのオプションの次元が導入されました。
  • PostTooLargeException のエラー メッセージが改善されました。
  • failed_jobs_uuid_uniqueに関する整合性制約違反を修正しました。

Laravel 11.30 は、継続的な改善と開発者のエクスペリエンスに対するフレームワークの取り組みを強調しています。 洗練されたテスト、柔軟なモデル ID、合理化された Enum ベースの認証を備えたこのリリースでは、よりクリーンで効率的なコードを作成するための強力な新しいツールが開発者に提供されます。 Laravel は、堅牢で機能豊富な Web アプリケーションを構築する PHP 開発者にとって、依然としてトップの選択肢です。

Laravel を活用してビジネスを向上させる準備はできていますか? 今すぐお問い合わせください。

以上がLaravel テスト、モデル ID、認可における飛躍的な進歩の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。