Via Composer
$ composer require narrowspark/php-cs-fixer-config
Create a configuration file .php_cs
in the root of your project:
<?php
declare(strict_types=1);
use Narrowspark\CS\Config\Config;
$config = new Config();
$config->getFinder()
->files()
->in(__DIR__)
->exclude('.build')
->exclude('vendor')
->name('*.php')
->ignoreDotFiles(true)
->ignoreVCS(true);
$config->setCacheFile(__DIR__ . '/.build/php-cs-fixer/php_cs.cache');
return $config;
All configuration examples use the caching feature, and if you want to use it as well, you add the cache directory to .gitignore
:
+ /.build/
/vendor/
💡 personally, I prefer to use a .build
directory for storing build artifacts.
💡 optionally specify a header:
<?php
declare(strict_types=1);
use Narrowspark\CS\Config\Config;
+$header = <<<EOF
+Copyright (c) 2020 Narrowspark
+
+For the full copyright and license information, please view
+the LICENSE file that was distributed with this source code.
+EOF;
-$config = new Narrowspark\CS\Config\Config();
+$config = new Narrowspark\CS\Config\Config($header);
$config->setCacheFile(__DIR__ . '/.build/php-cs-fixer/php_cs.cache');
return $config;
This will turn on and configure the HeaderCommentFixer
, so that
file headers will be added to PHP files, for example:
💡 optionally override rules from a rule set by passing in an array of rules to be merged in:
<?php
declare(strict_types=1);
use Narrowspark\CS\Config\Config;
- $config = new Config();
+ $config = new Config(null /* if you dont need a header */, [
'mb_str_functions' => false,
'strict_comparison' => false,
]);
$config->getFinder()
->files()
->in(__DIR__)
->exclude('.build')
->exclude('vendor')
->name('*.php')
->ignoreDotFiles(true)
->ignoreVCS(true);
$config->setCacheFile(__DIR__ . '/.build/php-cs-fixer/php_cs.cache');
return $config;
If you like composer
scripts, add a coding-standards
script to composer.json
:
{
"name": "foo/bar",
"require": {
"php": "^7.3",
},
"require-dev": {
"narrowspark/php-cs-fixer-config": "~1.0.0"
+ },
+ "scripts": {
+ "cs:check": [
+ "mkdir -p .build/php-cs-fixer",
+ "php-cs-fixer fix --diff --diff-format=udiff --verbose"
+ ]
}
}
Run
$ composer cs:check
To automatically fix coding standard violations.
If you like Travis CI, add a coding-standards
stage to your jobs:
language: php
cache:
directories:
- $HOME/.composer/cache
+ - .build/php-cs-fixer
jobs:
include:
+ - stage: "Coding Standards"
+
+ php: 7.3
+
+ install:
+ - composer install --no-interaction --no-progress --no-suggest
+
+ before_script:
+ - mkdir -p .build/php-cs-fixer
+
+ script:
+ - vendor/bin/php-cs-fixer fix --config=.php_cs --diff --dry-run --verbose
If you like GitHub Actions, add a coding-standards
job to your workflow:
on:
pull_request:
push:
branches:
- master
tags:
- "**"
name: "Continuous Integration"
jobs:
+ coding-standards:
+ name: "Coding Standards"
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: "Checkout"
+ uses: actions/[email protected]
+
+ - name: "Disable Xdebug"
+ run: php7.3 --ini | grep xdebug | sed 's/,$//' | xargs sudo rm
+
+ - name: "Cache dependencies installed with composer"
+ uses: actions/[email protected]
+ with:
+ path: ~/.composer/cache
+ key: php7.3-composer-locked-${{ hashFiles('**/composer.lock') }}
+ restore-keys: |
+ php7.3-composer-locked-
+
+ - name: "Install locked dependencies with composer"
+ run: php7.3 $(which composer) install --no-interaction --no-progress --no-suggest
+
+ - name: "Create cache directory for friendsofphp/php-cs-fixer"
+ run: mkdir -p .build/php-cs-fixer
+
+ - name: "Cache cache directory for friendsofphp/php-cs-fixer"
+ uses: actions/[email protected]
+ with:
+ path: ~/.build/php-cs-fixer
+ key: php7.3-php-cs-fixer-${{ hashFiles('**/composer.lock') }}
+ restore-keys: |
+ php7.3-php-cs-fixer-
+
+ - name: "Run friendsofphp/php-cs-fixer"
+ run: php7.3 vendor/bin/php-cs-fixer fix --config=.php_cs --diff --diff-format=udiff --dry-run --verbose
$ vendor/bin/phpunit
If you would like to help take a look at the list of issues and check our Contributing guild.
Note: please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
The Narrowspark http-emitter is open-sourced software licensed under the MIT license