Contribution Guide

Make sure you read this before sending a pull request.

[Since 0.5.0]

Introduction

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 www.php-fig.org for more Standards Recommendations of the PHP Framework Interop Group.

Pletfix Repositories

Application Skeleton

Fork the repository https://github.com/pletfix/app if you want to develop at the Pletfix Application Skeleton.

Core

If you want to develop at the Pletfix Core, fork the repository https://github.com/pletfix/core.

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": [
            "library/classes",
            "library/facades"
        ],
        "files": [
            "library/functions/helpers.php",
            "workbench/pletfix/core/helpers.php"
        ],
        "psr-4": {
            "App\\": "app/",
            "Core\\": "workbench/pletfix/core/src/",
        }
    }    
  5. Update the autoloader by entering this command:

    compose dump

Plugins

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.

Documentation

If you are interested in contributing a translation this documents, read the README of https://github.com/pletfix/docs.


(edit on GitHub)