Dotkernel Admin follows the PSR-4 standards.
It is considered good practice to standardize the file structure of projects.
When using Dotkernel Admin the following structure is installed by default:
.github
- Contains GitHub 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 enabledcli.php
- Used to build console applications based on laminas-clidoctrine
- Used by the doctrine fixtures to populate 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 Admin identityauthorization.global.php
- Configures permissions for user rolesauthorization-guards.global.php
- Configures access per route for user rolescli.global.php
- Configures clicors.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 filenavigation.global.php
- Configures the top menusession.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 fixturesgeoip
- Holds the GeoLite2 databaseslock
- 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
folderThis folder contains a separate folder for each Module.
These are the modules included by default:
Admin
- Contains functionality for managing users with admin
role; note these are users save in the admin
database tableApp
- Contains core functionality, from authentication, to rendering, to error reportingSetting
- Contains functionality for saving and reading display settingsEach 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 moduleOpenAPI.php
- Detailed descriptions for each endpoint in the OpenAPI formatRoutesDelegator.php
- Module specific route registrationstemplates
folder for modulesThis folder contains the template files, used for example to help render e-mail templates.
twig
is used as Templating Engine. All template files have the extension.html.twig
.