Heim > Backend-Entwicklung > PHP-Tutorial > Beherrschung der bedingten Logik in Laravel mit den Methoden „when()' und „unless()': Beispiele aus der Praxis

Beherrschung der bedingten Logik in Laravel mit den Methoden „when()' und „unless()': Beispiele aus der Praxis

Mary-Kate Olsen
Freigeben: 2025-01-16 16:06:10
Original
737 Leute haben es durchsucht

Mastering Conditional Logic in Laravel with `when()` and `unless()` Methods: Real-Life Examples

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.

1. Dynamische Rollenzuweisung basierend auf Benutzereingaben

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.

Ohne when():

<code class="language-php">if ($request->has('role')) {
    $user->assignRole($request->input('role'));
}</code>
Nach dem Login kopieren

Mit when():

<code class="language-php">$user->when($request->has('role'), function ($user) use ($request) {
    $user->assignRole($request->input('role'));
});</code>
Nach dem Login kopieren

Die when()-Methode kapselt die Rollenzuweisung sauber und wird nur ausgeführt, wenn eine Rolle bereitgestellt wird.

2. Dynamische Validierungsregeln

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.

Ohne when():

<code class="language-php">$rules = [
    'email' => 'nullable',
];

if ($request->has('newsletter')) {
    $rules['email'] = 'required|email';
}

$request->validate($rules);</code>
Nach dem Login kopieren

Mit when():

<code class="language-php">$request->when($request->has('newsletter'), function () use ($request) {
    $request->validate([
        'email' => 'required|email',
    ]);
});</code>
Nach dem Login kopieren

Dieser sauberere Ansatz nutzt when() für die bedingte Validierung.

3. Bedingte Datenzusammenführung

Im E-Commerce gelten Rabatte möglicherweise nur mit einem gültigen Gutscheincode. Lassen Sie uns Rabattdaten dynamisch zusammenführen.

Ohne 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>
Nach dem Login kopieren

Mit 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>
Nach dem Login kopieren

Dies zeigt einen effizienteren, verkettbaren Ansatz für die Anwendung bedingter Rabatte.

4. Vereinfachung der Benutzerstatuslogik

Das Senden verschiedener Nachrichten basierend auf dem Benutzeraktivierungsstatus kann mit unless() vereinfacht werden.

Ohne unless():

<code class="language-php">if (!$user->isActive()) {
    return "Your account is inactive. Please contact support.";
} else {
    return "Welcome back!";
}</code>
Nach dem Login kopieren

Mit 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>
Nach dem Login kopieren

unless() fasst die bedingte Logik in einer einzigen, lesbaren return Anweisung zusammen.

5. Kombination von 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>
Nach dem Login kopieren

Weitere Beispiele (kurz zusammengefasst):

Der Artikel fährt mit ähnlich prägnanten Beispielen fort, die die Verwendung von when() und unless() in:

demonstrieren
  • Payment Gateway-Integration:Auswahl der Zahlungslogik basierend auf der vom Benutzer gewählten Methode.
  • Berechnung des Immobilienpreises: Anwendung von Rabatten basierend auf dem Erstkäuferstatus oder Aktionscodes.
  • Arzttermine:Anpassung der Zahlung basierend auf dem Versicherungsschutz.
  • Bitcoin-Preisanpassung:Hinzufügen von Gebühren basierend auf der Marktvolatilität.
  • Verfügbarkeit von E-Commerce-Produkten:Bestimmung der Versandkosten basierend auf dem Standort.
  • Medizinische Behandlungspläne: Zuweisung von Behandlungsplänen basierend auf dem Zustand des Patienten.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage