Inside the Dotkernel ecosystem, we strictly follow the following standards to make sure that we provide clean and easy-to-follow code:
Can only be created in API projects.
These are files that are used to contain a set of resources of the same type.
src/<ModuleName>/src/Collection
Collection
src/<ModuleName>/src/Collection/ExampleCollection.php
These are CLI scripts that are used to perform a specific task.
src/<ModuleName>/src/Command
Command
src/<ModuleName>/src/Command/ExampleCommand.php
Core-compatible projects MAY also have Core Commands:
src/Core/src/<ModuleName>/src/Command
Command
src/Core/src/<ModuleName>/src/Command/ExampleCommand.php
These are configuration classes where aliases, delegators, factories and template paths are registered.
src/<ModuleName>/src
ConfigProvider
src/<ModuleName>/src/ConfigProvider.php
Core-compatible projects also have a Core ConfigProvider:
src/Core/src/<ModuleName>/src
ConfigProvider
src/Core/src/<ModuleName>/src/ConfigProvider.php
When this file exists, Doctrine entity configurations are stored here.
Else, those too are stored in src/<ModuleName>/src/ConfigProvider.php
.
These are classes that represent a single resource and are used to store and retrieve data in a database.
src/Core/src/ModuleName/Entity
src/Core/src/ModuleName/Entity/Example.php
src/<ModuleName>/src/Entity
src/<ModuleName>/src/Entity/Example.php
These are classes responsible for instantiating specific objects.
src/<ModuleName>/src/Factory
Factory
src/<ModuleName>/src/Factory/ExampleFactory.php
Core-compatible projects MAY also have Core Factories:
src/Core/src/<ModuleName>/src/Factory
Factory
src/Core/src/<ModuleName>/src/Factory/ExampleFactory.php
These are classes used to populate the database with test data.
src/Core/src/App/src/Fixture
Loader
src/Core/src/App/src/Fixture/ExampleLoader.php
Cannot be created in API projects.
These are objectual representations of an HTML form.
src/<ModuleName>/src/Form
Form
src/<ModuleName>/src/Form/ExampleForm.php
These are classes responsible for handling a specific HTTP request.
src/<ModuleName>/src/Handler/<ResourceName>
Handler
src/<ModuleName>/src/Handler/<ResourceName>Post<ResourceName>CreateHandler.php
src/<ModuleName>/src/Handler/<ResourceName>
ResourceHandler
CollectionHandler
src/<ModuleName>/src/Handler/<ResourceName>/Create<ResourceName>ResourceHandler.php
src/<ModuleName>/src/Handler/<ResourceName>/Get<ResourceName>CollectionHandler.php
These are objectual representations of an HTML form input.
src/<ModuleName>/src/InputFilter/Input
Input
src/<ModuleName>/src/InputFilter/Input/ExampleInput.php
Core-compatible projects MAY also have Core Inputs:
src/Core/src/<ModuleName>/src/InputFilter/Input
Input
src/Core/src/<ModuleName>/src/InputFilter/Input/ExampleInput.php
These are classes that are used to validate and filter form data.
src/<ModuleName>/src/InputFilter
InputFilter
src/<ModuleName>/src/InputFilter/ExampleInputFilter.php
Core-compatible projects MAY also have Core InputFilters:
src/Core/src/<ModuleName>/src/InputFilter
InputFilter
src/Core/src/<ModuleName>/src/InputFilter/ExampleInputFilter.php
These are classes that can be used to perform actions before and after a request has been handled.
src/<ModuleName>/src/Middleware
Middleware
src/<ModuleName>/src/Middleware/ExampleMiddleware.php
Core-compatible projects MAY also have Core Middleware:
src/Core/src/<ModuleName>/src/Middleware
Middleware
src/Core/src/<ModuleName>/src/Middleware/ExampleMiddleware.php
These are classes used to modify the database schema.
src/Core/src/App/src/Migration
Version
+ Timestampsrc/Core/src/App/src/Migration/Version20250407142911.php
Can only be created in API projects.
These are configuration classes where OpenApi specifications are registered.
src/<ModuleName>/src
OpenApi
src/<ModuleName>/src/OpenApi.php
These are classes that represent an intermediary layer between the database and the entities.
src/Core/src/ModuleName/Repository
Repository
src/Core/src/ModuleName/Repository/ExampleRepository.php
src/<ModuleName>/src/Repository
Repository
src/<ModuleName>/src/Repository/ExampleRepository.php
These are configuration classes where HTTP request routes are registered.
src/<ModuleName>/src
RoutesDelegator
src/<ModuleName>/src/RoutesDelegator.php
These are classes that contain task-specific methods to be reused across the application.
src/<ModuleName>/src/Service
Service
src/<ModuleName>/src/Service/ExampleService.php
Core-compatible projects MAY also have Core Services:
src/Core/src/<ModuleName>/src/Service
Service
src/Core/src/<ModuleName>/src/Service/ExampleService.php
These are interfaces that serve as contracts for services.
src/<ModuleName>/src/ServiceInterface
ServiceInterface
src/<ModuleName>/src/Service/ExampleServiceInterface.php
Core-compatible projects MAY also have Core ServiceInterfaces:
src/Core/src/<ModuleName>/src/Service
Service
src/Core/src/<ModuleName>/src/Service/ExampleServiceInterface.php