Skip to content

wayofdev/php-cs-fixer-config

Repository files navigation

Build Status Total Downloads Latest Stable Version Commits since latest release PHP Version Require Codecov Mutation testing badge PHP Stan Level 9 of 9


PHP CS Fixer Config

Wrapper with pre-defined rules around the PHP-CS-Fixer package — A tool to automatically fix PHP Coding Standards issues.

This repository aims to provide a standardized way to apply coding standards across multiple projects, ensuring consistency and adherence to best practices.

By using predefined rulesets, it simplifies the setup process and allows teams to quickly integrate PHP-CS-Fixer into their development workflow.


If you like/use this package, please consider ⭐️ starring it. Thanks!


💿 Installation

→ Using composer

Require as dependency:

composer req --dev wayofdev/cs-fixer-config

🛠 Configuration

→ Setup

  • Create PHP file and name it .php-cs-fixer.dist.php and place it inside root directory of project. It will be recognized by PHP CS Fixer automatically.

  • Example contents of .php-cs-fixer.dist.php file:

     <?php
     
     declare(strict_types=1);
     
     use WayOfDev\PhpCsFixer\Config\ConfigBuilder;
     use WayOfDev\PhpCsFixer\Config\RuleSets\DefaultSet;
     
     require_once 'vendor/autoload.php';
     
     $config = ConfigBuilder::createFromRuleSet(new DefaultSet())
         ->inDir(__DIR__ . '/src')
         ->inDir(__DIR__ . '/tests')
         ->addFiles([__FILE__])
         ->getConfig()
     ;
     
     $config->setCacheFile(__DIR__ . '/.build/php-cs-fixer/php-cs-fixer.cache');
     
     return $config;

→ Composer Script

  • Add scripts section to composer.json:

    {
        "scripts": {
    +       "cs:diff": "php vendor/bin/php-cs-fixer fix --dry-run -v --diff",
    +       "cs:fix": "php vendor/bin/php-cs-fixer fix -v"
        }
    }

→ Git

  • Place .build folder file into .gitignore

    +/.build/
     /vendor/

→ Makefile

  • If you are using Makefile, create a Makefile with a lint-php and lint-diff targets:

    +APP_RUNNER ?= php
    +APP_COMPOSER ?= $(APP_RUNNER) composer
    +
    +prepare:
    +  mkdir -p .build/php-cs-fixer
    +.PHONY: prepare
    
    +lint-php: prepare ## Fixes code to follow coding standards using php-cs-fixer
    +  $(APP_COMPOSER) cs:fix
    +.PHONY: lint-php
    
    +lint-diff: prepare ## Runs php-cs-fixer in dry-run mode and shows diff which will by applied
    +  $(APP_COMPOSER) cs:diff
    +.PHONY: lint-diff

​ Or, you can check for one of our pre-configured Makefile from any of these repositories:

https://github.com/wayofdev/php-cs-fixer-config/blob/master/Makefile

https://github.com/wayofdev/laravel-package-tpl/blob/master/Makefile

→ GitHub Actions

  • To use this package in GitHub Actions, add a coding-standards.yml workflow to your repository:

    ---
    
    on:  # yamllint disable-line rule:truthy
      pull_request:
        branches:
          - master
      push:
        branches:
          - master
    
    name: 🧹 Fix PHP coding standards
    
    jobs:
      coding-standards:
        timeout-minutes: 4
        runs-on: ${{ matrix.os }}
        concurrency:
          cancel-in-progress: true
          group: coding-standards-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
        strategy:
          matrix:
            os:
              - ubuntu-latest
            php-version:
              - '8.1'
            dependencies:
              - locked
        permissions:
          contents: write
        steps:
          - name: ⚙️ Set git to use LF line endings
            run: |
              git config --global core.autocrlf false
              git config --global core.eol lf
    
          - name: 🛠️ Setup PHP
            uses: shivammathur/setup-php@2.30.4
            with:
              php-version: ${{ matrix.php-version }}
              extensions: none, ctype, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter
              ini-values: error_reporting=E_ALL
              coverage: none
    
          - name: 📦 Check out the codebase
            uses: actions/checkout@v4.1.5
    
          - name: 🛠️ Setup problem matchers
            run: |
              echo "::add-matcher::${{ runner.tool_cache }}/php.json"
    
          - name: 🤖 Validate composer.json and composer.lock
            run: composer validate --ansi --strict
    
          - name: 🔍 Get composer cache directory
            uses: wayofdev/gh-actions/actions/composer/get-cache-directory@v3.1.0
    
          - name: ♻️ Restore cached dependencies installed with composer
            uses: actions/cache@v4.0.2
            with:
              path: ${{ env.COMPOSER_CACHE_DIR }}
              key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }}
              restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-
    
          - name: 📥 Install "${{ matrix.dependencies }}" dependencies with composer
            uses: wayofdev/gh-actions/actions/composer/install@v3.1.0
            with:
              dependencies: ${{ matrix.dependencies }}
    
          - name: 🛠️ Prepare environment
            run: make prepare
    
          - name: 🚨 Run coding standards task
            run: composer cs:fix
            env:
              PHP_CS_FIXER_IGNORE_ENV: true
    
          - name: 📤 Commit and push changed files back to GitHub
            uses: stefanzweifel/git-auto-commit-action@v5.0.1
            with:
              commit_message: 'style(php-cs-fixer): lint php files and fix coding standards'
              branch: ${{ github.head_ref }}
              commit_author: 'github-actions <github-actions@users.noreply.github.com>'
            env:
              GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

​ Or, you can check for one of our pre-configured workflows from any of these repositories:

https://github.com/wayofdev/php-cs-fixer-config/blob/master/.github/workflows/coding-standards.yml


💻 Usage

Fix coding standards by simply running console command:

→ Directly

vendor/bin/php-cs-fixer fix -v

→ Via Composer Script

To use via composer script commands:

  • Fixes code to follow coding standards using php-cs-fixer:

    composer cs:diff
  • Runs php-cs-fixer in dry-run mode and shows diff which will by applied:

    composer cs:fix

→ Using Makefile

To use with Makefile

  • Fixes code to follow coding standards using php-cs-fixer:

    make lint-php
  • Runs php-cs-fixer in dry-run mode and shows diff which will by applied:

    make lint-diff 

🔒 Security Policy

This project has a security policy.


🙌 Want to Contribute?

Thank you for considering contributing to the wayofdev community! We are open to all kinds of contributions. If you want to:

You are more than welcome. Before contributing, kindly check our contribution guidelines.

Conventional Commits


🫡 Contributors

Contributors Badge


🌐 Social Links

Codecov Follow on Twitter (X)


🧱 Resources


⚖️ License

Licence