Zainspirowany artykułem Edd Man’s o opcjonalnych kontrolnych przepływach, stworzyłem mały pakiet do Laravel, który realizuje opcjonalne zatrzymanie aplikacji.
Udostępnia on trait SpatieOrAbortOrAbort, który może być używany z dowolną klasą. Do wszystkich metod klasy dodawana jest funkcjonalność orAbort. Gdy oryginalna metoda zwróci false, zostanie wywołana funkcja Laravel abort z kodem błędu 404.
Dlaczego chciałbyś używać tego traitu? Zwykle mogłeś robić coś takiego:
$article = $articleRepository->find($articleId) ?: abort(404)
Po użyciu traitu powyższy kod zamieni się w bardziej czytelny:
$article = $articleRepository->findOrAbort($articleId);
Możesz nawet dodać dodatkowy parametr z kodem zwracanym:
$article = $articleRepository->findOrAbort($articleId, 500);
Jeśli metoda find naszego repozytorium zwróci false, Laravel zatrzyma aplikację z kodem 500.
Trait orAbort wykorzystuje magiczną metodę __call. Nie stosuj go w klasach, które już używają tej metody.
Pakiet można znaleźć na GitHub.