Personal PHP-CS-Fixer wrapper, preset management and custom rules.
composer require romanzipp/php-cs-fixer-config --dev
Notice: You also need to install the PHP-CS-Fixer package itself if you need a local installation with executable in your vendor/bin
folder.
This package has been created to streamline configuration management for multiple projects and keeping PHP CS Fixer rules up to date.
return romanzipp\Fixer\Config::make()
->in(__DIR__)
->preset(
new romanzipp\Fixer\Presets\PrettyPHP()
)
->out();
- PrettyPHP
- PrettyLaravel (extends PrettyPHP)
You can easily create your own presets by extending the AbstractPreset class.
In case you only need some tweaks for specific projects - which won't deserve an own preset - there are various methods you can make us of.
$config = romanzipp\Fixer\Config::make();
$config->allowRisky(true); // Allow risky rules.
$config->withRules(['...']); // Set additional rules
$config->exclude(['...']); // Add single or many files to the list of excluded files.
$config->excludeDirectories(['...']); // Add single or many directories to the list of excluded directories.
$fixer->withRules([
'RomanZipp/phpdoc_fqcn' => true,
]);
Show code sample
use App\Foo;
use App\Bar;
/**
* @param Foo $foo
* @return Bar[]
*/
function foo(Foo $foo): array {}
use App\Foo;
/**
* @param \App\Foo $foo
* @return \App\Bar[]
*/
function foo(Foo $foo): array {}
return romanzipp\Fixer\Config::make()
// ...
->finderCallback(static function (PhpCsFixer\Finder $finder): void {
// ...
})
->configCallback(static function (PhpCsFixer\Config $config): void {
$config->registerCustomFixers();
// ...
})
// ...
->out();
You will need to install PHP CS Fixer globally on your system because PHPStorm does not allow you to set the php-cs-fixer executable on a per-project basis or relative to the project path.
composer global require friendsofphp/php-cs-fixer
Unfortunately you have to repeat this process for every project since there is a bug in PHPStorm which prevents users from using relative paths for the .php-cs-fixer.dist.php
configuration or executable file.
Another theoretical approach to this issue is to create a unified ruleset file in your users .composer folder. This has the downside on only having one single ruleset.