Install Dependencies
composer require --dev friendsofphp/php-cs-fixer eloquent/code-style
Ensure php-cs-fixer is installed as a dev dependency.
Generate Config File
Create .php-cs-fixer.php in your project root:
<?php return Eloquent\CodeStyle\Config::create(__DIR__);
This auto-configures the tool with Eloquent’s preferred PSR-12 + custom rules.
First Run Fix files in your project:
vendor/bin/php-cs-fixer fix
Target specific files/directories:
vendor/bin/php-cs-fixer fix src/
Check Without Fixing Dry-run to preview changes:
vendor/bin/php-cs-fixer fix --dry-run
Pre-Commit Hook
Add to .git/hooks/pre-commit (or use tools like husky):
#!/bin/sh
vendor/bin/php-cs-fixer fix --diff --dry-run --allow-risky=yes
--diff: Only check staged files.--allow-risky: Skip risky fixes (e.g., line endings).CI Pipeline Enforce style in CI (e.g., GitHub Actions):
- name: PHP-CS-Fixer
run: vendor/bin/php-cs-fixer fix --level=all --allow-risky=yes --diff
Customizing Rules Extend the config to override defaults:
$config = Eloquent\CodeStyle\Config::create(__DIR__);
$config->getRules()->remove('no_unused_imports'); // Disable a rule
$config->getRules()->set('array_syntax', 'short'); // Force short array syntax
return $config;
Partial Fixes Fix only specific rules:
vendor/bin/php-cs-fixer fix --rules=@Eloquent --rules=@PSR12
fix on new dev machines to align with team standards.--diff to highlight style changes in PRs.vendor/, artifacts/) via $config->getFinder()->exclude().Archived Package
Risky Fixes
--allow-risky=yes is required for some rules (e.g., line endings).--dry-run.Finder Quirks
test/fixture vs. tests/fixtures).vendor/bin/php-cs-fixer fix --verbose to see processed files.Rule Conflicts
phpstan).--rules to isolate rules.Verbose Mode
vendor/bin/php-cs-fixer fix --verbose
Reveals skipped files and applied rules.
Rule-Specific Fixes Target a single rule to isolate issues:
vendor/bin/php-cs-fixer fix --rules=@Eloquent --rules=braces
Custom Rules Combine with other rule sets (e.g., Symfony):
$config->getRules()->import('@Symfony');
Path Overrides
Use paths() to limit scope:
$config->getFinder()->paths(['src', 'app']);
Cache Improve performance with caching:
vendor/bin/php-cs-fixer fix --cache=no # Disable cache for debugging
How can I help you explore Laravel packages today?