Cos’è il trait Conditionable
Il traitIlluminate\Support\Traits\Conditionable aggiunge alla tua classe i metodi when() e unless(). La sua caratteristica principale è permettere di diramare l’elaborazione in base a una condizione mantenendo la method chain.
Il codice sorgente reale si trova in
src/Illuminate/Conditionable/Traits/Conditionable.php. È referenziato tramite l’alias Illuminate\Support\Traits\Conditionable.Uso di base
when() — esegue quando la condizione è vera
unless() — esegue quando la condizione è falsa
unless() è l’inverso di when(). Il callback viene eseguito quando la condizione è falsa.
Perché la method chain continua
Se il valore di ritorno del callback ènull, viene restituito $this (l’oggetto che usa il trait). Se il callback non restituisce null, viene restituito quel valore.
null), viene restituito $this.
Chiamare senza argomenti — HigherOrderWhenProxy
Chiamandowhen() senza argomenti viene restituito un HigherOrderWhenProxy. Con esso puoi impostare la condizione a posteriori.
Passare una closure come valore
Se passi una closure come primo argomento, il valore di ritorno di quella closure viene usato come condizione.Pattern tipico con il QueryBuilder
La costruzione dinamica delle query conwhen() è il caso d’uso più comune.
Applicare Conditionable a una tua classe
Bastause del trait per avere disponibili when() / unless().
Utilizzo in Mail, Notification e Response
when() è utilizzabile anche nella costruzione di email, notifiche e response.
Quando usare tap() e quando when()
tap() e when() si assomigliano, ma hanno scopi diversi.
Prossimi passi
Higher-order messages delle collection
Impara il meccanismo di sintassi come
$collection->map->method() e il suo utilizzo pratico.