Was ist der Conditionable-Trait?
Der TraitIlluminate\Support\Traits\Conditionable erweitert ein Objekt um die Methoden when() und unless(). Sein Kennzeichen: Sie können Verzweigungen einbauen und dennoch die Method-Chain fortsetzen.
Der eigentliche Quellcode befindet sich unter
src/Illuminate/Conditionable/Traits/Conditionable.php und wird über den Alias Illuminate\Support\Traits\Conditionable referenziert.Grundlegende Verwendung
when() — bei wahrer Bedingung ausführen
unless() — bei falscher Bedingung ausführen
unless() ist die Umkehrung von when(). Der Callback wird ausgeführt, wenn die Bedingung falsch ist.
Warum die Method-Chain fortgesetzt wird
Gibt der Callbacknull zurück, wird $this (das Objekt, das den Trait verwendet) zurückgegeben. Gibt der Callback etwas anderes als null zurück, wird dieser Rückgabewert weitergereicht.
null) zurück, wird $this weitergereicht.
Aufruf ohne Argumente — HigherOrderWhenProxy
Ruft manwhen() ganz ohne Argumente auf, wird ein HigherOrderWhenProxy zurückgegeben. Damit können Sie die Bedingung nachträglich festlegen.
Eine Closure als Wert übergeben
Wird als erstes Argument eine Closure übergeben, wird deren Rückgabewert als Bedingung verwendet.Typisches Muster im QueryBuilder
Der dynamische Aufbau einer Query mitwhen() ist der häufigste Anwendungsfall.
Conditionable in eigenen Klassen einsetzen
Nach einem einfachenuse des Traits stehen when() und unless() zur Verfügung.
Einsatz bei Mail, Notification und Response
when() lässt sich auch beim Aufbau von Mails, Notifications und Responses nutzen.
Abgrenzung zu tap()
tap() und when() ähneln sich, verfolgen aber unterschiedliche Ziele.
Nächste Schritte
Higher-Order Messages in Collections
Lernen Sie Funktionsweise und praktischen Einsatz von Syntax wie
$collection->map->method() kennen.