ホームページ >バックエンド開発 >PHPチュートリアル >`when()` メソッドと `unless()` メソッドを使用して Laravel の条件付きロジックをマスターする: 実際の例
有名な PHP フレームワークである Laravel は、エレガントな構文と強力な機能を誇ります。 Laravel 11.35.0 で導入された when()
メソッドと unless()
メソッド (Conditionable
トレイトの一部) は、条件付きロジックに対するより簡潔で効率的なアプローチを提供し、コードの可読性と保守性を大幅に向上させます。この記事では、これらのメソッドを実際の Laravel シナリオで実際に応用する方法について説明します。
ユーザーが役割を選択するユーザー登録フォームを考えてみましょう。 登録後、選択したロールに基づいてさまざまな権限が割り当てられます。
when()
なし:<code class="language-php">if ($request->has('role')) { $user->assignRole($request->input('role')); }</code>
when()
の場合:<code class="language-php">$user->when($request->has('role'), function ($user) use ($request) { $user->assignRole($request->input('role')); });</code>
when()
メソッドは、ロールの割り当てを適切にカプセル化し、ロールが提供された場合にのみ実行します。
フォームでは、特定のフィールドは特定の条件下でのみ検証を必要とする場合があります。たとえば、電子メール フィールドは、ユーザーがニュースレターにオプトインする場合にのみ必須です。
when()
なし:<code class="language-php">$rules = [ 'email' => 'nullable', ]; if ($request->has('newsletter')) { $rules['email'] = 'required|email'; } $request->validate($rules);</code>
when()
の場合:<code class="language-php">$request->when($request->has('newsletter'), function () use ($request) { $request->validate([ 'email' => 'required|email', ]); });</code>
このよりクリーンなアプローチでは、条件付き検証に when()
を利用します。
電子商取引では、有効なクーポン コードがある場合にのみ割引が適用される場合があります。 割引データを動的にマージしましょう。
when()
なし:<code class="language-php">$data = [ 'total_price' => $cart->totalPrice(), ]; if ($request->has('coupon_code')) { $coupon = Coupon::where('code', $request->input('coupon_code'))->first(); if ($coupon) { $data['discount'] = $coupon->discount_amount; } } return response()->json($data);</code>
when()
の場合:<code class="language-php">$data = [ 'total_price' => $cart->totalPrice(), ]; $data = $data->when($request->has('coupon_code'), function ($data) use ($request) { $coupon = Coupon::where('code', $request->input('coupon_code'))->first(); if ($coupon) { $data['discount'] = $coupon->discount_amount; } return $data; }); return response()->json($data);</code>
これは、条件付き割引適用に対するより合理化された連鎖可能なアプローチを示しています。
ユーザーのアクティベーションステータスに基づいて異なるメッセージを送信することは、unless()
を使用して簡素化できます。
unless()
なし:<code class="language-php">if (!$user->isActive()) { return "Your account is inactive. Please contact support."; } else { return "Welcome back!"; }</code>
unless()
の場合:<code class="language-php">return $user->unless($user->isActive(), function () { return "Your account is inactive. Please contact support."; })->otherwise(function () { return "Welcome back!"; });</code>
unless()
は、条件ロジックを単一の読みやすい return
ステートメントに凝縮します。
when()
と unless()
複雑なシナリオの場合は、when()
と unless()
を組み合わせて、さまざまなユーザー タイプ (管理者、ゲストなど) を管理し、適切なコンテンツを表示します。
<code class="language-php">$variable->when($user->isAdmin(), function ($variable) { return $variable->adminDashboard(); })->unless($user->isAdmin(), function ($variable) { return $variable->guestDashboard(); });</code>
この記事では、when()
での unless()
と
これらの例は、さまざまなアプリケーションにわたる Laravel の when()
メソッドと unless()
メソッドの多用途性と優雅さを強調しています。 これらのメソッドを利用することで、開発者はよりクリーンで保守性が高く、読みやすい Laravel コードを作成できます。
以上が`when()` メソッドと `unless()` メソッドを使用して Laravel の条件付きロジックをマスターする: 実際の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。