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/CollectionCollectionsrc/<ModuleName>/src/Collection/ExampleCollection.phpThese are CLI scripts that are used to perform a specific task.
src/<ModuleName>/src/CommandCommandsrc/<ModuleName>/src/Command/ExampleCommand.phpCore-compatible projects MAY also have Core Commands:
src/Core/src/<ModuleName>/src/CommandCommandsrc/Core/src/<ModuleName>/src/Command/ExampleCommand.phpThese are configuration classes where aliases, delegators, factories and template paths are registered.
src/<ModuleName>/srcConfigProvidersrc/<ModuleName>/src/ConfigProvider.phpCore-compatible projects also have a Core ConfigProvider:
src/Core/src/<ModuleName>/srcConfigProvidersrc/Core/src/<ModuleName>/src/ConfigProvider.phpWhen 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/Entitysrc/Core/src/ModuleName/Entity/Example.phpsrc/<ModuleName>/src/Entitysrc/<ModuleName>/src/Entity/Example.phpThese are classes responsible for instantiating specific objects.
src/<ModuleName>/src/FactoryFactorysrc/<ModuleName>/src/Factory/ExampleFactory.phpCore-compatible projects MAY also have Core Factories:
src/Core/src/<ModuleName>/src/FactoryFactorysrc/Core/src/<ModuleName>/src/Factory/ExampleFactory.phpThese are classes used to populate the database with test data.
src/Core/src/App/src/FixtureLoadersrc/Core/src/App/src/Fixture/ExampleLoader.phpCannot be created in API projects.
These are objectual representations of an HTML form.
src/<ModuleName>/src/FormFormsrc/<ModuleName>/src/Form/ExampleForm.phpThese are classes responsible for handling a specific HTTP request.
src/<ModuleName>/src/Handler/<ResourceName>Handlersrc/<ModuleName>/src/Handler/<ResourceName>Post<ResourceName>CreateHandler.phpsrc/<ModuleName>/src/Handler/<ResourceName>ResourceHandlerCollectionHandlersrc/<ModuleName>/src/Handler/<ResourceName>/Create<ResourceName>ResourceHandler.phpsrc/<ModuleName>/src/Handler/<ResourceName>/Get<ResourceName>CollectionHandler.phpThese are objectual representations of an HTML form input.
src/<ModuleName>/src/InputFilter/InputInputsrc/<ModuleName>/src/InputFilter/Input/ExampleInput.phpCore-compatible projects MAY also have Core Inputs:
src/Core/src/<ModuleName>/src/InputFilter/InputInputsrc/Core/src/<ModuleName>/src/InputFilter/Input/ExampleInput.phpThese are classes that are used to validate and filter form data.
src/<ModuleName>/src/InputFilterInputFiltersrc/<ModuleName>/src/InputFilter/ExampleInputFilter.phpCore-compatible projects MAY also have Core InputFilters:
src/Core/src/<ModuleName>/src/InputFilterInputFiltersrc/Core/src/<ModuleName>/src/InputFilter/ExampleInputFilter.phpThese are classes that can be used to perform actions before and after a request has been handled.
src/<ModuleName>/src/MiddlewareMiddlewaresrc/<ModuleName>/src/Middleware/ExampleMiddleware.phpCore-compatible projects MAY also have Core Middleware:
src/Core/src/<ModuleName>/src/MiddlewareMiddlewaresrc/Core/src/<ModuleName>/src/Middleware/ExampleMiddleware.phpThese are classes used to modify the database schema.
src/Core/src/App/src/MigrationVersion + Timestampsrc/Core/src/App/src/Migration/Version20250407142911.phpCan only be created in API projects.
These are configuration classes where OpenApi specifications are registered.
src/<ModuleName>/srcOpenApisrc/<ModuleName>/src/OpenApi.phpThese are classes that represent an intermediary layer between the database and the entities.
src/Core/src/ModuleName/RepositoryRepositorysrc/Core/src/ModuleName/Repository/ExampleRepository.phpsrc/<ModuleName>/src/RepositoryRepositorysrc/<ModuleName>/src/Repository/ExampleRepository.phpThese are configuration classes where HTTP request routes are registered.
src/<ModuleName>/srcRoutesDelegatorsrc/<ModuleName>/src/RoutesDelegator.phpThese are classes that contain task-specific methods to be reused across the application.
src/<ModuleName>/src/ServiceServicesrc/<ModuleName>/src/Service/ExampleService.phpCore-compatible projects MAY also have Core Services:
src/Core/src/<ModuleName>/src/ServiceServicesrc/Core/src/<ModuleName>/src/Service/ExampleService.phpThese are interfaces that serve as contracts for services.
src/<ModuleName>/src/ServiceInterfaceServiceInterfacesrc/<ModuleName>/src/Service/ExampleServiceInterface.phpCore-compatible projects MAY also have Core ServiceInterfaces:
src/Core/src/<ModuleName>/src/ServiceServicesrc/Core/src/<ModuleName>/src/Service/ExampleServiceInterface.php