Dotkernel API follows the PSR-4 standards.
It is a good practice to standardize the file structure of projects.
When using Dotkernel API the following structure is installed by default:
bin
- executable files from CLIconfig
- various configuration filesdata
- should contain project-related data (AVOID storing sensitive data on VCS)documentation
- should contain project-related documentationlog
- storage of log files generated by dot-error-log librarypublic
- publicly visible files. The webserver need to have this folder as www-document root folder.src
- should contain the source code filestest
- should contain the test files.github
- containes workflow files.laminas-ci
- contains laminas-ci workflow filesbin
directoryThis directory contents are
clear-config-cache.php
which removes the config cache file (data/cache/config-cache.php
- available only when development mode is enabled).cli.php
used to build console applications based on laminas-clidoctrine
used by the doctrine fixtures to populate the database tablesconfig
directoryThis directory contains all application-related config files:
cli-config.php
: command line interface configuration used by migrations, fixtures, cronsconfig.php
: registers ConfigProviders for installing packagescontainer.php
: main service container that provides access to all registered servicesdevelopment.config.php.dist
: activates debug mode; gets symlinked as development.config.php
when enabling development modemigrations.php
: configuration for database migration, like migration file location and table to save the migration logpipeline.php
: contains a list of middlewares, in the order of their executiontwig-cs-fixer.php
: configuration file for Twig code style checker/fixerconfig/autoload
directoryThis directory contains all service-related local and global config files:
authorization.global.php
: configures access per route for user rolescli.global.php
: configures clicontent-negotiation.global.php
: configures request and response formatscors.local.php.dist
: configures Cross-Origin Resource Sharing, like call origin, headers, cookiesdependencies.global.php
: config file to set global dependencies that should be accessible by all modulesdevelopment.local.php.dist
: gets symlinked as development.local.php
when enabling development mode - activates error handlersdoctrine.global.php
: configuration used by Object–relational mappingerror-handling.global.php
: configures and activates error logslocal.php.dist
: local config file where you can overwrite application name and URLlocal.test.php.dist
: local configuration for functional testsmail.local.php.dist
: mail configuration; e.g. sendmail vs smtp, message configuration, mail loggingmezzio.global.php
: Mezzio core config filemezzio-tooling-factories.global.php
: add or remove factory definitionsresponse-header.global.php
: defines headers per routetemplates.global.php
: dotkernel/dot-twigrenderer config filedata
directoryThis directory is a storage for project data files and service caches. It contains these folders:
cache
: cache for e.g. Twig filesdoctrine
: database migrations and fixturesoauth
: encryption, private and public keys needed for authenticationdata/lock
- lock files generated by dotkernel/dot-cli
AVOID storing sensitive data on VCS.
log
directoryThis directory stores daily log files.
When you access the application from the browser, (if not already created) a new log file gets created in the format specified in the config/autoload/error-handling.global.php
config file under the stream
array key.
public
directoryThis directory contains all publicly available assets and serves as the entry point of the application:
uploads
: a folder that normally contains files uploaded via the application.htaccess
: server configuration file used by Apache web server; it enables the URL rewrite functionalityindex.php
: the application's main entry pointrobots.txt.dist
: a sample robots.txt file that allows/denies bot access to certain areas of your application; activate it by duplicating the file as robots.txt
and comment out the lines that don't match your environmentsrc
directoryThis folder contains a separate folder for each Module. Each Module folder, in turn, should contain following directories, unless they are empty:
The above example is just some of the directories a project may include, but they should give you an idea about the recommended structure.
Other classes in the src
directory may include InputFilter
, EventListener
, Helper
, Command
, Factory
etc.
The src
directory normally also contains these files:
ConfigProvider.php
- Configuration data for the moduleOpenAPI.php
- Detailed descriptions for each endpoint in the OpenAPI formatRoutesDelegator.php
- Module specific route registrations Module main routes entry filetemplates
directoryThis directory contains the template files, used for example to help render e-mail templates.
Dotkernel API uses twig as Templating Engine. All template files have the extension .html.twig