spaze/coding-standard
spaze/coding-standard provides PHP_CodeSniffer rule sets to enforce consistent PHP coding style and quality across projects. Install via Composer as a dev dependency and run PHPCS with the included standards; CI workflows validate XML and rules.
composer require --dev spaze/coding-standard
.phpcs.xml in your project root:
<?xml version="1.0"?>
<ruleset>
<config name="installed_paths" value="./vendor/spaze/coding-standard"/>
<rule ref="SlevomatCodingStandard"/>
</ruleset>
vendor/bin/phpcs --standard=SlevomatCodingStandard app/
Enforce consistent code style in a Laravel feature branch:
.phpcs.xml to include only critical rules (e.g., trailing commas, docblock formatting).CI/CD Integration:
- name: Run PHPCS
run: vendor/bin/phpcs --standard=SlevomatCodingStandard --warning-severity=3 --error-severity=5 app/
--warning-severity, --error-severity) to fail builds on critical violations.IDE Integration:
Settings > Languages & Frameworks > PHP > Code Sniffer.SlevomatCodingStandard and point to the installed ruleset.Incremental Adoption:
Arrays.TrailingComma, Commenting.EmptyComment) to avoid overwhelming the team.Classes.BackedEnumTypeSpacing, Functions.RequireTrailingCommaInDeclaration)..phpcs.xml:
<arg name="exclude" value="vendor,storage,bootstrap/cache"/>
.phpcs.xml:
<rule ref="SlevomatCodingStandard">
<exclude name="SlevomatCodingStandard.Arrays.TrailingArrayComma"/>
<include name="SlevomatCodingStandard.Functions.RequireTrailingCommaInCall"/>
</rule>
laravel-pint in CI to catch formatting issues:
- run: npm run production
- run: vendor/bin/pint
- run: vendor/bin/phpcs --standard=SlevomatCodingStandard app/
Fixing False Positives:
--report=full to get detailed violation reports:
vendor/bin/phpcs --standard=SlevomatCodingStandard --report=full app/
Rule-Specific Debugging:
--ruleset:
vendor/bin/phpcs --standard=SlevomatCodingStandard --ruleset=SlevomatCodingStandard.Arrays.TrailingArrayComma app/
PHPCS 4.0 Migration:
composer require --dev squizlabs/php_codesniffer:^4.0
Rule Conflicts with PSR-12:
SpacingAfterBlock) override PSR-12 defaults, causing unexpected violations.Performance in Large Codebases:
--parallel for multi-core processing:
vendor/bin/phpcs --parallel=4 --standard=SlevomatCodingStandard app/
actions/cache).IDE Misconfiguration:
vendor/bin/phpcs --standard=SlevomatCodingStandard app/Http/Controllers/ExampleController.php
UselessParentheses)..phpcs.xml to bypass it while fixing other issues:
<rule ref="SlevomatCodingStandard">
<exclude name="SlevomatCodingStandard.PHP.UselessParentheses"/>
</rule>
.phpcs.xml:
<rule ref="SlevomatCodingStandard"/>
<rule ref="Custom/Sniff/Example"/>
<config name="severity" value="%env.CI_SEVERITY%"/>
phpstan/extension-installer to enforce both static analysis and coding standards:
composer require --dev phpstan/extension-installer
phpstan.neon to use the same ruleset:
includes:
- vendor/spaze/coding-standard/phpstan.neon
installed_paths Pitfall:
installed_paths in the ruleset file, which can cause conflicts..phpcs.xml explicitly sets the path:
<config name="installed_paths" value="./vendor/spaze/coding-standard"/>
Classes.BackedEnumTypeSpacing may not apply to PHP <8.1 code.<rule ref="SlevomatCodingStandard">
<exclude name="SlevomatCodingStandard.Classes.BackedEnumTypeSpacing"/>
</rule>
laravel-pint). Align configurations to avoid inconsistencies.--fix to automatically correct simple violations (e.g., trailing commas):
vendor/bin/phpcbf --standard=SlevomatCodingStandard app/
# .git/hooks/pre-commit
#!/bin/sh
vendor/bin/phpcs --standard=SlevomatCodingStandard --warning-severity=3 --error-severity=5
.phpcs-exceptions.md file to document why certain rules are disabled for specific files/classes. Example:
## Exceptions
- `SlevomatCodingStandard.Arrays.TrailingArrayComma`: Disabled for `app/OldLegacyCode.php` (third-party library).
How can I help you explore Laravel packages today?