PHP CS Fixer rules used within the WordPress team for sites and packages. This package centralizes formatting settings and allows for easy configuration of PHP CS Fixer.
composer require yard/php-cs-fixer-rules
This package enhances the PhpCsFixer\Config
class (see the ConfigInterface). One
can create a new configuration object by calling the static
create(Finder $finder, string $name = 'default'): self
method.
<?php
use PhpCsFixer\Finder;
$finder = Finder::create()
->in(__DIR__)
->name('*.php')
->notName('*.blade.php')
->ignoreDotFiles(true)
->ignoreVCS(true)
->exclude('public')
->exclude('node_modules')
->exclude('build');
return \Yard\PhpCsFixerRules\Config::create($finder);
removeRules(array $rulesKeys): self
or removeRule(string $ruleKey): self
allows you to remove rules.
/**
* Default rules:
*
* [
* 'method_chaining_indentation' => true,
* 'yoda_style' => [
* 'always_move_variable' => true,
* 'equal' => true,
* 'identical' => true,
* 'less_and_greater' => true,
* ],
* 'binary_operator_spaces' => [
* 'default' => 'single_space',
* 'operators' => [
* '=>' => null,
* '|' => 'no_space',
* ],
* ],
* ]
*/
$config = \Yard\PhpCsFixerRules\Config::create($finder)
->removeRules(['yoda_style', 'binary_operator_spaces']);
/**
* Expected rule set:
*
* [
* 'method_chaining_indentation' => true,
* ]
*/
return $config->removeRule('method_chaining_indentation');
/**
* Expected rule set: []
*/
mergeRules(array $rules): self
allows you to add and override rules.
/**
* Default rules:
*
* [
* 'yoda_style' => [
* 'always_move_variable' => true,
* 'equal' => true,
* 'identical' => true,
* 'less_and_greater' => true,
* ],
* 'binary_operator_spaces' => [
* 'default' => 'single_space',
* 'operators' => [
* '=>' => null,
* '|' => 'no_space',
* ],
* ],
* ]
*/
return \Yard\PhpCsFixerRules\Config::create($finder)
->mergeRules([
'yoda_style' => [
'equal' => false,
],
'binary_operator_spaces' => [
'operators' => [
'|' => 'single_space',
'<>' => null,
]
]
]);
/**
* Expected rule set:
*
* [
* 'yoda_style' => [
* 'always_move_variable' => true,
* 'equal' => false, // this setting changed!
* 'identical' => true,
* 'less_and_greater' => true,
* ],
* 'binary_operator_spaces' => [
* 'default' => 'single_space',
* 'operators' => [
* '=>' => null,
* '|' => 'single_space', // this setting changed!
* '<>' => null, // this setting was added!
* ],
* ],
* ]
*/
Yard\PhpCsFixerRules\Config extends the PHP CS Fixer config object so all native methods are available. Note that the native PHP CS Fixer methods return a PhpCsFixer\ConfigInterface type (instead of Yard\PhpCsFixerRules\Interfaces\ConfigInterface). Your linter may not like this.
return \Yard\PhpCsFixerRules\Config::create($finder)
->setRiskyAllowed(false) // native PHP CS Fixer method
->mergeRules([ // Yard\PhpCsFixerRules\Config method
'yoda_style' => [
'equal' => false,
],
'binary_operator_spaces' => [
'operators' => [
'|' => 'single_space',
'<>' => null,
]
]
]);
RiskyAllowed
is set to true by default. In older projects you may need to disable it.
return \Yard\PhpCsFixerRules\Config::create($finder)
->setRiskyAllowed(false);
setDefaultRules(): self
gets called by the static create(Finder $finder, string $name = 'default'): self
method.
In normal use cases there is no need to call this method.