Groups
Los endpoints contienen directivas, que se ejecutan en un flujo que puede ser alterado usando groups.
- ERROR_FLOW: si una directiva está en este group, sólo se ejecutará si otra directiva lanza previamente una excepción.
- AFTER_FLOW: todas las directivas en este group, serán ignoradas mientras se resuelve la petición, una vez enviada la respuesta al cliente, las directivas en este group serán ejecutadas una detrás de otra. Es un buen momento para escribir a Log, por ejemplo.
- QUEUE_FLOW: cuando usemos jobs, lo haremos por medio de una directiva, que encola la tarea. Todas las directivas no ejecutadas aún, serán encoladas para que las resuelva un worker, por lo que no podremos comunicarnos con el cliente para escribir una respuesta. Usaremos QUEUE_FLOW para hacer lo anterior, es decir, las directivas con QUEUE_FLOW, serán ejecutadas después de haber encolado un group de directivas.
- NORMAL_FLOW: todas las directivas que no tengan group, por defecto, tendrán este group. Es muy raro que tengas que utilizarlo. A no ser que quieras deshabilitarlo con disable, usando el state.
Además se pueden crear groups especificos, usando el state. Que nos ofrece los siguientes métodos:
$state->groups()->enable('CUSTOM_NAME'); //habilita un group
$state->groups()->disable('ANOTHER_CUSTOM_NAME'); //deshabilita un group
$state->groups()->disableAll(); //deshabilita todos los group
En principio sólo se ejecutan las directivas en NORMAL_FLOW, podriamos tener una directiva en un group CUSTOM, que al no estar en NORMAL_FLOW, no se ejecutaria. Y habilitar ese group CUSTOM con enable, desde otra directiva sólo si se cumple una condición. O podríamos usar disableAll o disable para implementar otros tipos de lógica.
Ir a la home