Laravel Architecture
Priority: P0 (CRITICAL)
Structure
See project structure for the recommended directory layout.
Workflow
- Create Form Request for validation (
php artisan make:request StoreUserRequest). - Create Action class with a single
handle()method for the use case. - Inject Action into controller via constructor DI.
- Bind interfaces in
AppServiceProviderfor swappable implementations.
Controller Pattern
See implementation examples for slim controller, action class, and service container binding patterns.
Validation
- Use Form Requests with
authorize()andrules()methods. - Call
$request->validated()in the controller for mass assignment. - Never use inline
$request->validate().
Anti-Patterns
- No logic in Controllers: Move to Services or Action classes.
- No manual instantiation: Use Service Container via DI.
- No inline
$request->validate(): Favor Form Request classes. - No excessive global helpers: Use class-based logic instead.