Laravel, ein renommiertes PHP-Framework, zeichnet sich durch eine elegante Syntax und leistungsstarke Funktionen aus. Die in Laravel 11.35.0 eingeführten Methoden when()
und unless()
(Teil des Merkmals Conditionable
) bieten einen präziseren und effizienteren Ansatz für die bedingte Logik und verbessern die Lesbarkeit und Wartbarkeit des Codes erheblich. In diesem Artikel werden praktische Anwendungen dieser Methoden in realen Laravel-Szenarien untersucht.
Stellen Sie sich ein Benutzerregistrierungsformular vor, in dem Benutzer eine Rolle auswählen. Nach der Registrierung werden je nach gewählter Rolle unterschiedliche Berechtigungen zugewiesen.
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>
Die when()
-Methode kapselt die Rollenzuweisung sauber und wird nur ausgeführt, wenn eine Rolle bereitgestellt wird.
In einem Formular erfordern bestimmte Felder möglicherweise nur unter bestimmten Bedingungen eine Validierung. Beispielsweise ist das E-Mail-Feld nur dann obligatorisch, wenn sich der Benutzer für einen Newsletter entscheidet.
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>
Dieser sauberere Ansatz nutzt when()
für die bedingte Validierung.
Im E-Commerce gelten Rabatte möglicherweise nur mit einem gültigen Gutscheincode. Lassen Sie uns Rabattdaten dynamisch zusammenführen.
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>
Dies zeigt einen effizienteren, verkettbaren Ansatz für die Anwendung bedingter Rabatte.
Das Senden verschiedener Nachrichten basierend auf dem Benutzeraktivierungsstatus kann mit unless()
vereinfacht werden.
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()
fasst die bedingte Logik in einer einzigen, lesbaren return
Anweisung zusammen.
when()
und unless()
Kombinieren Sie bei komplexen Szenarien when()
und unless()
, um verschiedene Benutzertypen (Administrator, Gast usw.) zu verwalten und entsprechende Inhalte anzuzeigen.
<code class="language-php">$variable->when($user->isAdmin(), function ($variable) { return $variable->adminDashboard(); })->unless($user->isAdmin(), function ($variable) { return $variable->guestDashboard(); });</code>
Der Artikel fährt mit ähnlich prägnanten Beispielen fort, die die Verwendung von when()
und unless()
in:
Diese Beispiele unterstreichen die Vielseitigkeit und Eleganz der when()
- und unless()
-Methoden von Laravel für verschiedene Anwendungen. Durch die Verwendung dieser Methoden können Entwickler saubereren, wartbareren und besser lesbaren Laravel-Code schreiben.
Das obige ist der detaillierte Inhalt vonBeherrschung der bedingten Logik in Laravel mit den Methoden „when()' und „unless()': Beispiele aus der Praxis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!