josesierradev / laravel-service-gateway
A Laravel package to generate Service and Gateway classes for clean architecture projects.
Installs: 33
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/josesierradev/laravel-service-gateway
Requires
- php: >=7.3
- illuminate/support: >=7.0
This package is auto-updated.
Last update: 2025-10-29 03:27:30 UTC
README
LaravelServiceGateway is a package that simplifies the creation of Service and Gateway layers in your Laravel projects. It provides custom Artisan commands to generate these layers quickly, ensuring a clean architecture for the logic of your application.
Features
- Create Services: Generate service classes for handling business logic.
- Create Gateways: Generate gateway classes for external API integrations or other external services.
- Create Models with Service and Gateway: Automatically generate a model with corresponding service and gateway classes.
Installation
To install the package, run the following command:
composer require josesierradev/laravel-service-gateway
⚙ Usage
After installation, you can use the following Artisan commands:
Create a Service
To generate a service, use the following command:
php artisan make:service {ServiceName}
This will create a service class in the app/Services directory.
Create a Gateway
To generate a gateway, use the following command:
php artisan make:gateway {GatewayName}
This will create a gateway class in the app/Gateways directory.
Create a Model, Service, and Gateway
You can use the extended make:model command as usual, but now with the following options:
--serviceor-S: Generate a Service class.--gatewayor-g: Generate a Gateway class.--sgor--gs: Generate both Service and Gateway classes.
These can be combined with standard model options like:
-m: Migration-c: Controller-s: Seeder-f: Factory
Example
php artisan make:model Product -mcfs -Sg
This will create:
- The
Productmodel - A migration file
- A controller
- A factory
- A seeder
- A service class:
App\Services\ProductService - A gateway class:
App\Gateways\ProductGateway
⚠ Note: If the model already exists, the service and gateway will not be created.
Validators
make:validator Command
The make:validator command generates a new Validator class, optionally linked to a Laravel Eloquent model for automatic rule generation. You can also choose to generate a Laravel FormRequest class that uses this validator.
Usage
php artisan make:validator UserValidator
With Model-Based Rule Generation
php artisan make:validator UserValidator --model=User
This will create a validator using the schema (if available) or model $fillable and $casts as fallback.
With FormRequest
php artisan make:validator UserValidator --formRequest
Also generates a UserValidatorRequest FormRequest and links its rules() method to use the UserValidator::rules().
With Both
php artisan make:validator UserValidator --model=User --formRequest
Rule Generation Strategy
- Using Schema (default): The command attempts to load the table structure from the database using Laravel Schema and Doctrine to infer column types, nullability, foreign keys, and unique constraints.
- Fallback to
$fillable: If the table does not exist in the schema, it warns the developer and uses the$fillableand$castsfrom the model to generate basic rules.
Examples
public static function rules(): array { return [ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'max:255', 'unique:users,email'], 'age' => ['nullable', 'integer'], 'is_active' => ['required', 'boolean'], 'created_by' => ['exists:users,id'] ]; }
Notes
- The command supports foreign key validation using the
exists:rule if the schema is available. - Supports types:
string,integer,boolean,numeric,date,arraybased on the schema or casts.
Options
| Option | Shortcut | Description |
|---|---|---|
--model=Model |
-m |
Generate validation rules based on the model class |
--formRequest |
-f |
Also create a FormRequest class using this validator |
Output
The validator will be created in the App\Validators namespace unless otherwise configured.
If --formRequest is passed, a file will also be created in App\Http\Requests and will use the validator rules.
Made with ❤️ by JoseSierraDev