stickee / php-cs-fixer-config
stickee's PHP CS Fixer config
Installs: 11 069
Dependents: 1
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 1
Open Issues: 1
Requires
- php: ^8.3
- adamwojs/php-cs-fixer-phpdoc-force-fqcn: ^2.0
- friendsofphp/php-cs-fixer: ^3.62.0
This package is auto-updated.
Last update: 2024-11-09 14:58:10 UTC
README
Provides a PHP CS Fixer config for stickee projects.
Installation
mkdir -p tools/php-cs-fixer composer require --working-dir=tools/php-cs-fixer stickee/php-cs-fixer-config cp tools/php-cs-fixer/vendor/stickee/php-cs-fixer-config/dist/.php-cs-fixer.dist.php .php-cs-fixer.dist.php
You must commit this new directory and the .php-cs-fixer.dist.php
config file.
You must add .php-cs-fixer.cache
to your .gitignore
file.
Why do we install PHP CS Fixer into its own directory?
Usage
tools/php-cs-fixer/bin/php-cs-fixer fix
Overrides
You can override any of the rules or add your own by adding them to the $overrideRules
array in the .php-cs-fixer.dist.php
file.
See here for a detailed description of available rules and their options.
Example
This has already been done for you with the ordered_class_elements
rule which has been reset to the PSR12
value of use_traits
only.
This has been added to help PR reviewers see only what has been changed when linting your project and not elements that have been re-ordered.
Once you are happy that your project has been linted correctly you may remove this override to use the stickee settings for this rule which are stricter and order more elements.
Pre-Commit Hook
You can use PHP CS Fixer in combination with Husky and Lint Staged to lint only git staged PHP files.
Installation
- install Husky into your project
- install Lint Staged into your project
cp tools/php-cs-fixer/vendor/stickee/php-cs-fixer-config/dist/.husky/pre-commit .husky/pre-commit
cp tools/php-cs-fixer/vendor/stickee/php-cs-fixer-config/dist/.lintstagedrc.json .lintstagedrc.json
CI
An example GitHub action file is included at tools/php-cs-fixer/vendor/stickee/php-cs-fixer-config/dist/.github/workflows/php-cs-fixer.yaml
.
This will run PHP CS Fixer on PRs and new commits to those PRs.
In theory this is not necessary since developers should be linting their code using the above mentioned pre-commit hook, however it ensures that PRs contain linted code in case a developer skips the pre-commit hook.
Rules
The available RuleSets can be found at tools/php-cs-fixer/vendor/stickee/php-cs-fixer-config/src/RuleSet/
.
You can probably [ctrl] + click the class in the .php-cs-fixer.dist.php
file to get to it in your editor.
Web description (prettier)
You can use either https://mlocati.github.io/php-cs-fixer-configurator/#version:3.2 or https://cs.symfony.com/doc/rules/index.html to see what the rules are doing.
CLI description (faster)
Alternatively you can run tools/php-cs-fixer/vendor/bin/php-cs-fixer describe <rule-or-set-name>
.
Credits
https://github.com/Visual-Craft/php-cs-fixer-config
for inspiration on how to create a custom config for PHP CS Fixer since there's no built-in way to do it.
stickeerehan
for his earlier work on PHP Code Styles so I didn't have to start from scratch.
The "supermarket mobiles" developers
for reviewing the many PRs that finalised the rules that we use.
The members of the #codestyle Slack channel
for caring about code styles.