You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
| Core | The backbone of your application, the system-level infrastructure that handles fundamental concerns | Authentication & Authorization, Database, Common Services, Shared Entities | src/Core/src/ |
| Core | The backbone of your application, the system-level infrastructure that handles fundamental concerns | Authentication & Authorization, Database, Common Services, Shared Entities | src/Core/src/ |
13
+
| App | The project-specific features, "business logic" of your application| Routes, Handlers, Custom Services, Input Filters, Custom Middleware, Error Reporting |src/App/src/|
14
14
15
15
## Architecture
16
16
@@ -91,13 +91,13 @@ Here's how a typical request flows through Dotkernel API:
| Handlers<br>(PSR-15) |Single-action request handlers instead of multi-action controllers |`GetUserResourceHandler.php`<br>`PostUserResourceHandler.php`| Some of the benefits are separation of concerns, easier testing, clearer intent |
97
-
| Services | The Business logic layer sits between the handlers and repositories | Business rules validation<br>Data transformation<br>Cross-cutting concerns | Execution flow:<br>Handler → Service → Repository → Database |
98
-
| Repositories | Data access layer using Doctrine ORM | Query building<br>Entity persistence<br>Database abstraction | Only componenet that interacts with the database|
99
-
| Input Filters | Request validation using Laminas InputFilter | Filter and validate all forms and other user inputs| Execution flow:<br>Request → InputFilter → Validation → Handler |
100
-
| Entities | Representing database tables using Doctrine ORM |`class User { ... }`| Ensure consistency between database and application data|
| Handlers(PSR-15) |Process incoming HTTP requests, coordinate application logic/services, and return the HTTP response |`GetUserResourceHandler.php`, `PostUserResourceHandler.php`| Some of the benefits are: separation of concerns, easier testing, clearer intent |
97
+
| Services | Contains the business logic layer that sits between the handlers and repositories | Business rules validation, Data transformation, Cross-cutting concerns | Execution flow:`Handler → Service → Repository → Database`|
98
+
| Repositories | Data access layer using Doctrine ORM | Query building, Entity persistence, Database abstraction | The only component that interacts with the database |
99
+
| Input Filters | Filter and validate requests using Laminas InputFilter | Login form, contact us form, `$_GET` and `$_POST` values, CLI arguments | Execution flow:`Request → InputFilter → Validation → Handler`|
100
+
| Entities | Represent database tables using Doctrine ORM |`class User { ... }`| Ensure consistency between database and application data|
0 commit comments