A modern exception handling package for Laravel with enum-based error codes, automatic translation sync, and clean JSON API responses.
- β
Enum-based error codes (e.g.
MainRespCode,UserRespCode) - β
Helper functions:
error(),error_if(),error_unless(),error_response() - β
Automatic translation sync: keep enum cases in sync with
lang/files - β Configurable: response structure, error keys, caching
- β Laravel-ready: Service provider, config publish, artisan commands
- β Works with Laravel 9 β 12+
composer require aslnbxrz/simple-exceptionPublish config:
php artisan vendor:publish --tag=simple-exception-configThis creates config/simple-exception.php.
'response' => [
'template' => 'default',
'templates' => [
'default' => [
'success' => ':success',
'data' => ':data',
'error' => [
'message' => ':message',
'code' => ':code',
],
'meta' => ':meta',
],
],
],
'default_error_code' => -1,
'enum_generation' => [
'resp_codes_dir' => 'Enums/RespCodes', // relative to app/
],
'translations' => [
'base_path' => 'vendor/simple-exception',
],php artisan make:resp-code User --cases="NotFound=404,Forbidden=403" --locale=en,uzThis creates:
app/Enums/RespCodes/UserRespCode.phplang/vendor/simple-exception/en/user.phplang/vendor/simple-exception/uz/user.php
use App\Enums\RespCodes\UserRespCode;
// Always throws SimpleErrorResponse
error(UserRespCode::NotFound);
// Conditional helpers
error_if(!$user, UserRespCode::NotFound);
error_unless($user->can('update'), UserRespCode::Forbidden);
// Custom string error
error_response('Custom failure', 1001);use App\Enums\RespCodes\UserRespCode;
class UserController extends Controller
{
public function show($id)
{
$user = User::find($id);
error_if(!$user, UserRespCode::NotFound);
return response()->json(['user' => $user]);
}
}php artisan sync:resp-translations --allphp artisan sync:resp-translations UserRespCode --locale=uzOutput:
π Found 1 enum(s).
π Syncing App\Enums\RespCodes\UserRespCode
β
lang/vendor/simple-exception/uz/user.php created/updated
lang/vendor/simple-exception/en/user.php
<?php
return [
'not_found' => 'User not found',
'forbidden' => 'Access denied',
];{
"success": true,
"data": { "id": 1, "name": "Bexruz" },
"error": null,
"meta": []
}{
"success": false,
"data": null,
"error": {
"message": "User not found",
"code": 404
},
"meta": []
}{
"success": false,
"data": null,
"error": {
"message": "User not found",
"code": 404
},
"meta": {
"file": "/app/Http/Controllers/UserController.php",
"line": 15,
"trace": [...]
}
}| Command | Description |
|---|---|
php artisan make:resp-code {name} |
Generate a new error enum (with translations) |
php artisan sync:resp-translations {enum?} |
Sync translations for a single enum or all enums |
php artisan vendor:publish --tag=simple-exception-config |
Publish package config |
composer testRuns all package unit tests (artisan commands, exception handling, translation sync).
-
v1.1.0
- Added
make:resp-codecommand with--casesand--locale - Unified translation folder structure:
lang/vendor/simple-exception/{locale}/{file}.php - Improved helper functions (
error_if,error_unless, etc.) - Cleaner
SimpleErrorResponseAPI:resolvedHttpCode(),resolvedCode()
- Added
-
v1.0.x
- Initial release with enum-based exceptions and helpers
- Fork
- Create feature branch
- Commit changes
- Open PR
MIT Β© aslnbxrz