feat: Implement comprehensive architectural guidelines and clean code standards
- Establish feature-based architecture with clear separation between Logic, Data, and Shared layers - Define directory structure conventions for controllers, entities, DTOs, managers, mappers, models, processors, providers, repositories, and services - Implement Symfony 7.4+ compliance with proper Request handling (UI layer only) - Enforce PHP 8+ attributes usage instead of annotations - Set up proper DTO usage in UseCases with immutable properties - Configure repository pattern with interfaces in Logic layer and implementations in Data layer - Implement strict separation of concerns with UI layer handling Request objects exclusively - Define clear naming conventions (PascalCase for feature names) - Add shared components directory for reusable elements across features - Establish HTTP status code constants usage instead of magic numbers - Configure proper file placement for controllers in UI/Frontend, UI/Api, and UI/CLI subdirectories - Enforce modern PHP practices with explicit return types and strict typing This commit lays the foundation for a maintainable, scalable Symfony 7.4+ application following clean architecture principles and modern coding standards.
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
---
|
||||
globs: "**/UI/**/*.php, **/Logic/**/DTO/*.php"
|
||||
description: Defines the standard for input validation in Symfony 7 projects.
|
||||
Logic layer DTOs hold the validation rules via attributes. The UI layer is
|
||||
responsible for executing the validation using the injected validator service,
|
||||
ensuring clean separation of concerns and preventing invalid data from
|
||||
entering the business logic.
|
||||
alwaysApply: false
|
||||
---
|
||||
|
||||
All input validation must be performed on DTOs located in /src/Logic/[FeatureName]/DTO using PHP 8 #[Assert\...] attributes. Controllers in the UI layer (/src/UI/...) must inject Symfony\Component\Validator\Validator\ValidatorInterface, validate the DTO before passing it to UseCases, and handle validation errors immediately.
|
||||
Reference in New Issue
Block a user