Every two weeks I send out a newsletter containing lots of interesting stuff for the modern PHP developer. You can expect quick tips, links to interesting tutorials, opinions and packages. Want to learn the cool stuff? Then sign up now!

A trait to optionally abort a Laravel app

Inspired by Edd Man‘s post on optional value control-flows I made a small Laravel package to optionally abort your application.

The package provides a  Spatie\OrAbort\OrAbort-trait that can be used on any class you want. All the methods of the class will gain orAbort-variant. When the original function returns a falsy value Laravel’s abort-function will be called with code 404.

Why in the world would you want use this trait? If you use repositories you probably have written this kind of code:

$article = $articleRepository->find($articleId) ?: abort(404)

By using this trait on your repository you can write it a bit more readable:

$article = $articleRepository->findOrAbort($articleId);

You can even add an extra parameter to specify an abort code:

$article = $articleRepository->findOrAbort($articleId, 500);

If the find-function on your repository returns a falsy value Laravel will abort with status code 500.

The orAbort-trait uses the magic method __call. Do not use the trait on classes that already use that method call.

You can find the package on GitHub: https://github.com/spatie/laravel-or-abort

Freek Van der Herten is a partner and developer at Spatie, an Antwerp based company that specializes in creating web apps with Laravel. After hours he writes about modern PHP and Laravel on this blog. When not coding he’s probably rehearsing with his kraut rock band. He loves waffles and butterflies.
  • Enricu

    What’s the difference between findOrFail()? At first glance it seams that they do the same.