A trait to optionally abort a Laravel app original

by Freek Van der Herten – 1 minute read

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:

[code language="php"] $article = $articleRepository->find($articleId) ?: abort(404)



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

[code language="php"]
$article = $articleRepository->findOrAbort($articleId);

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

[code language="php"] $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: <a href="https://github.com/spatie/laravel-or-abort">https://github.com/spatie/laravel-or-abort</a>

Join 9,500+ smart developers

Get my monthly newsletter with what I learn from running Spatie, building Oh Dear, and maintaining 300+ open source packages. Practical takes on Laravel, PHP, and AI that you can actually use.

No spam. Unsubscribe anytime. You can also follow me on X.

Found something interesting to share? Submit a link to the community section.