Wat is de Conditionable-trait?
De traitIlluminate\Support\Traits\Conditionable voegt de methodes when() en unless() toe aan een object. Kenmerkend is dat je op basis van voorwaarden kunt vertakken en toch je method chain kunt voortzetten.
De echte broncode staat in
src/Illuminate/Conditionable/Traits/Conditionable.php. Je verwijst ernaar via de alias Illuminate\Support\Traits\Conditionable.Basisgebruik
when() — uitvoeren als de voorwaarde waar is
unless() — uitvoeren als de voorwaarde onwaar is
unless() is het omgekeerde van when(). De callback wordt uitgevoerd wanneer de voorwaarde onwaar is.
Waarom de method chain doorloopt
Geeft de callbacknull terug, dan wordt $this teruggegeven (het object dat de trait gebruikt). Geeft de callback iets anders dan null terug, dan wordt die returnwaarde teruggegeven.
null), dan wordt $this teruggegeven.
Aanroepen zonder argumenten — HigherOrderWhenProxy
Roep jewhen() aan zonder argumenten, dan krijg je een HigherOrderWhenProxy terug. Daarmee kun je de voorwaarde later instellen.
Een closure als waarde doorgeven
Geef je een closure door als eerste argument, dan wordt de returnwaarde van die closure als voorwaarde gebruikt.Typisch patroon bij de QueryBuilder
Dynamische query’s opbouwen metwhen() is de meest voorkomende use case.
Conditionable toepassen op je eigen klasse
Je hoeft de trait alleen teuse-en en when() / unless() zijn beschikbaar.
Toepassing bij Mail, Notifications en Responses
when() kun je ook gebruiken bij het opbouwen van e-mails, notificaties en responses.
Wanneer gebruik je tap() en wanneer when()?
tap() en when() lijken op elkaar, maar hebben een ander doel.
Volgende stap
Higher order messages van collections
Leer hoe syntaxis als
$collection->map->method() werkt en hoe je die in de praktijk gebruikt.