romanzipp / php-cs-fixer-config
Personal PHP-CS-Fixer Configuration
Fund package maintenance!
romanzipp
Installs: 37 780
Dependents: 29
Suggesters: 0
Security: 0
Stars: 4
Watchers: 2
Forks: 2
Open Issues: 0
Requires
- php: ^7.4|^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpunit/phpunit: ^7.0|^8.5.23|^9.0
README
Personal PHP-CS-Fixer wrapper, preset management and custom rules.
Installation
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.
Usage
This package has been created to streamline configuration management for multiple projects and keeping PHP CS Fixer rules up to date.
.php-cs-fixer.dist.php
return romanzipp\Fixer\Config::make() ->in(__DIR__) ->preset( new romanzipp\Fixer\Presets\PrettyPHP() ) ->out();
Available Presets
- PrettyPHP
- PrettyLaravel (extends PrettyPHP)
You can easily create your own presets by extending the AbstractPreset class.
Overriding presets
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.
Available Rules
Convert PHPDoc Classes to FQCN
$fixer->withRules([ 'RomanZipp/phpdoc_fqcn' => true, ]);
Show code sample
Bad
use App\Foo; use App\Bar; /** * @param Foo $foo * @return Bar[] */ function foo(Foo $foo): array {}
Good
use App\Foo; /** * @param \App\Foo $foo * @return \App\Bar[] */ function foo(Foo $foo): array {}
Advanced Usage
Access the config and finder instances
return romanzipp\Fixer\Config::make() // ... ->finderCallback(static function (PhpCsFixer\Finder $finder): void { // ... }) ->configCallback(static function (PhpCsFixer\Config $config): void { $config->registerCustomFixers(); // ... }) // ... ->out();
PHPStorm Configuration
Prequisites
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
1. Enable Inspection
2. Select ruleset .php-cs-fixer.dist.php file [...]
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.