Dotkernel Frontend follows the PSR-4 standards.
It is considered good practice to standardize the file structure of projects.
When using Dotkernel Frontend the following structure is installed by default:
.github
- Contains workflow files.laminas-ci
- Contains laminas-ci workflow filesbin
folderThis folder contents are
clear-config-cache.php
- Removes the config cache file data/cache/config-cache.php
; available only when development mode is enableddoctrine
- Used by the doctrine fixtures to populate the database tablesdoctrine-migrations
- Used to create the database tablesconfig
folderThis folder 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
folderThis folder contains all service-related local and global config files:
app.global.php
- Configures basic app variablesauthentication.global.php
- Defines the User identityauthorization.global.php
- Configures permissions for user rolesauthorization-guards.global.php
- Configures access per route for user rolescors.global.php
- 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 fileresponse-header.global.php
- Defines headers per routesession.global.php
- Configures the sessiontemplates.global.php
- dotkernel/dot-twigrenderer config filedata
folderThis folder is a storage for project data files and service caches. It contains these folders:
cache
- Cache for e.g. Twig filesdoctrine
- Database migrations and fixtureslock
- Contains lock files generated by dotkernel/dot-cli
AVOID storing sensitive data on the repository!
log
folderThis folder 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
folderThis folder contains all publicly available assets and serves as the entry point of the application:
css
and js
- Contains the css and js file(s) generated by the webpack (npm) from the assets folderfonts
and images
- Contain the font and image file(s) copied by the webpack (npm) from the assets folderuploads
- a folder that normally contains admin avatar images.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.
These are the modules included by default:
App
- Core functionality, from authentication, to rendering, to error reportingContact
- Contains functionality for the contact us formPage
- Contains functionality for displaying a pagePlugin
- Contains plugin functionality for dynamic forms and templatesUser
- Contains functionality for users, from login and registering, to account managementEach Module folder, in turn, should contain the following folders, unless they are empty:
src/Controller
- Action classessrc/Entity
- Used by database entitiessrc/Repository
- Entity repository foldersrc/Service
- Service classesThe above example is just some of the folders a project may include, but they should give you an idea about the recommended structure.
Other classes the src
folder may include are InputFilter
, EventListener
, Helper
, Command
, Factory
etc.
The src
folder in each Module folder normally also contains these files:
ConfigProvider.php
- Configuration data for the moduleRoutesDelegator.php
- Module specific route registrationstemplates
directory for modulesThis directory contains the template files.
twig
is used as Templating Engine. All template files have the extension.html.twig
.