Oh Dear is the all-in-one monitoring tool for your entire website. We monitor uptime, SSL certificates, broken links, scheduled tasks and more. You'll get a notifications for us when something's wrong. All that paired with a developer friendly API and kick-ass documentation. O, and you'll also be able to create a public status page under a minute. Start monitoring using our free trial now.

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>

Stay up to date with all things Laravel, PHP, and JavaScript.

You can follow me on these platforms:

On all these platforms, regularly share programming tips, and what I myself have learned in ongoing projects.

Every month I send out a newsletter containing lots of interesting stuff for the modern PHP developer.

Expect quick tips & tricks, interesting tutorials, opinions and packages. Because I work with Laravel every day there is an emphasis on that framework.

Rest assured that I will only use your email address to send you the newsletter and will not use it for any other purposes.

Comments

What are your thoughts on "A trait to optionally abort a Laravel app"?

Comments powered by Laravel Comments
Want to join the conversation? Log in or create an account to post a comment.