Contribution Guide

Make sure you read this before sending a pull request.

[Since 0.5.0]


Everyone is welcome to contribute to the Pletfix framework. Would you solve something more elegantly in the framework? Or are you missing a function? Then fork the repository and realize your ideas!

The Pletfix Philosophy

You should follow the proven software design paradigm, in particular:

The most important thing for Pletfix is the first point: Keep it simple! If you want to implement something, try to find the most easiest way with as little code as possible.

Do not write an insane construct with hundreds of objects and files, if you can also do it with just a few classes!

Also make sure that the external packages you are using are slim as well. Of course, the packages themselves should not include tons of other packages.

Choose third-party packages carefully so that the KISS principle is not violated!

Coding Style

Pletfix follows...

  • the PSR-1 coding standard,
  • the PSR-2 coding style guide and
  • the PSR-4 autoloading standard.

See also for more Standards Recommendations of the PHP Framework Interop Group.

Pletfix Repositories

Application Skeleton

Fork the repository if you want to develop at the Pletfix Application Skeleton.


If you want to develop at the Pletfix Core, fork the repository

We recommend that you set up a workbench as follows, so that you can test and verify the changes to the core directly in an application:

  1. Install a fresh Pletfix Application

  2. Remove the Pletfix Core in the vendor path:

    rm -R vendor/pletfix/core

  3. Create a folder workbench in the project folder and clone your fork of the Pletfix Core to this folder:

    mkdir workbench cd workbench mkdir pletfix cd pletfix git clone core

  4. Modify composer.json as below:

    • In the require section, remove the "pletfix/core": "dev-master" entry and insert all required packages from the core instead.
    • Add "Core\\": "workbench/pletfix/core/src/" to the psr-4 autoload section.
    • Add the core's helper file into the files autoload section.

    After this the autolaod section looks like below:

    "require": {
        "php": ">=5.6.4",
        "doctrine/cache": "^1.6",
        "doctrine/inflector": "^1.1",
        "jdorn/sql-formatter": "^1.2",
        "leafo/scssphp": "^0.6.6",
        "monolog/monolog": "~1.11",
        "natxet/cssmin": "^3.0",
        "oyejorge/less.php": "v1.7.0.10",
        "paragonie/random_compat": "^2.0",
        "psr/http-message": "~1.0",
        "tedivm/jshrink": "^1.1",
        "vlucas/phpdotenv": "~2.2"
    "require-dev": {
        "behat/mink": "^1.7",
        "behat/mink-browserkit-driver": "dev-master",
        "behat/mink-goutte-driver": "^1.2",
        "phpunit/phpunit": "^5.7|^6.0",
        "npm-asset/bootstrap": "^3.3.7",
        "npm-asset/eonasdan-bootstrap-datetimepicker": "^4.17.37",
        "npm-asset/font-awesome": "^4.6.3",
        "npm-asset/jquery": "^2.2.4",
        "npm-asset/moment": "^2.10",
        "npm-asset/selectize": "^0.12.3"
    "autoload": {
        "classmap": [
        "files": [
        "psr-4": {
            "App\\": "app/",
            "Core\\": "workbench/pletfix/core/src/",
  5. Update the autoloader by entering this command:

    compose dump


Do you have an idea to extend the framework? Then write a plugin. Read the chapter Plugins to learn how you can do it. You can download a example from GitHub.


If you are interested in contributing a translation this documents, read the README of

(edit on GitHub)