yiisoft/yii2-coding-standards
Yii 2 coding standards package providing PHP_CodeSniffer ruleset, sniffs, and tooling configs based on PSR-12 with Yii2-specific tweaks. Use it to enforce Yii2 core style in framework development or in existing Yii2 applications.
Installation
composer require --dev yiisoft/yii2-coding-standards
Add to your project’s composer.json under require-dev if not using globally.
First Run Integrate with PHP_CodeSniffer via:
./vendor/bin/phpcs --standard=Yiisoft src/
Verify the default rules align with Yii 2’s conventions (e.g., PSR-12 + Yii-specific sniffs).
Quick Use Case
Fix a common Yii 2 issue (e.g., missing @property PHPDoc):
./vendor/bin/phpcbf --standard=Yiisoft --ruleset=Yii2 src/models/User.php
CI/CD Hooks
Add to .github/workflows/php.yml:
- name: Run Coding Standards
run: ./vendor/bin/phpcs --standard=Yiisoft --warning-severity=3 src/
Fail builds on warnings (adjust severity as needed).
IDE Setup
Configure PHPStorm to use Yiisoft as the default CodeSniffer standard (via Settings > PHP > Code Sniffer).
Custom Rulesets
Extend defaults by creating a custom .phpcs.xml:
<config name="standard" value="Yiisoft" />
<rule ref="Yiisoft">
<exclude name="Yiisoft.NamingConventions.ValidClassName.PublicProperty" />
</rule>
Model Validation Rules
Enforce Yii 2’s rules() method conventions (e.g., ['safe', 'on' => 'scenario']):
./vendor/bin/phpcs --standard=Yiisoft src/models/
Controller Actions
Validate action naming (e.g., actionIndex() vs. action_create()):
./vendor/bin/phpcs --standard=Yiisoft --extensions=php src/controllers/
Dependency Injection
Check for proper use of Dependency trait or constructor injection:
./vendor/bin/phpcs --standard=Yiisoft --ruleset=Yii2.Dependency src/
False Positives
Yiisoft.NamingConventions.ValidClassName may flag ActiveRecord subclasses incorrectly..phpcs.xml:
<exclude-pattern>*/models/*.php</exclude-pattern>
Performance
tests/) can be slow.--ignore=tests/ or parallelize with php-parallel-lint.Outdated Rules
Yiisoft.Files.NamingConventions) may conflict with PSR-12..phpcs.xml:
<rule ref="Yiisoft.Files.NamingConventions">
<severity value="0" />
</rule>
Verbose Output
Use --report=full to see all violations with line numbers:
./vendor/bin/phpcs --standard=Yiisoft --report=full src/
Rule Documentation
Check the Yii2 Coding Standards docs for rule specifics (e.g., Yiisoft.CodingStyle vs. Yiisoft.NamingConventions).
Custom Sniffs
Extend the standard by creating a Sniff class in ruleset.xml:
<rule ref="Custom.Yiisoft.ExtraRule" />
Integration with PHPStan
Use phpstan-baseline to ignore false positives while keeping CodeSniffer for style:
./vendor/bin/phpstan analyse --level=5 --generate-baseline
./vendor/bin/phpcs --standard=Yiisoft --ignore=tests/
Git Hooks
Add to .git/hooks/pre-commit:
#!/bin/sh
./vendor/bin/phpcs --standard=Yiisoft --warning-severity=7 --extensions=php $@ || exit 1
How can I help you explore Laravel packages today?