Laravel 5.5 vendrá acompañado de dos helpers throw_if
y throw_unless
, los cuales han sido diseñados para hacer más sencillo y cómodo lanzar excepciones.
«Así como el resto de helpers, throw_if y throw_unless ayudan a la elaboración de un código más limpio y expresivo» decía TJ Miller, «En particular, estos dos helpers reducen un bloque condicional a una única linea de código.».
Revisemos estos helpers y como funcionan:
throw_if
Throw if hace exactamente lo que dice. Si el primer parámetro es un booleano y es true
, entonces lanzará una excepción.
Veamos un caso de uso de ejemplo:
1 2 3 4 | $foo = true; throw_if($foo, new BarException('Foo is false')); // or throw_if($foo, BarException::class, 'Foo is False'); |
Esta es la función completa y como funciona internamente:
1 2 3 4 5 6 | function throw_if($boolean, $exception, $message = '') { if ($boolean) { throw (is_string($exception) ? new $exception($message) : $exception); } } |
throw_unless
El inverso de throw_if
es throw_unless
y actúa exactamente del mismo modo pero a la inversa, comprueba que el primer parámetro sea false
y entonces lanza la excepción:
1 2 3 4 | $foo = false; throw_unless($foo, new BarException('Foo is True')); // or throw_unless($foo, BarException::class, 'Foo is True'); |
Y aquí su firma completa:
1 2 3 4 5 6 | function throw_unless($boolean, $exception, $message) { if (! $boolean) { throw (is_string($exception) ? new $exception($message) : $exception); } } |
Estos dos helpers vendrán incluidos en la versión 5.5 que se espera para Julio.