mayflower / mo4-coding-standard
PHP CodeSniffer ruleset implementing the MO4 coding standards extending the Symfony coding standards.
Package info
github.com/mayflower/mo4-coding-standard
Type:phpcodesniffer-standard
pkg:composer/mayflower/mo4-coding-standard
Requires
- php: ^8.1
- dealerdirect/phpcodesniffer-composer-installer: ^0.7 || ^1.0
- escapestudios/symfony2-coding-standard: ^3.17
- slevomat/coding-standard: ^8.23
- squizlabs/php_codesniffer: ^4.0
Requires (Dev)
- ergebnis/composer-normalize: ^2.45
- nikic/php-parser: < 5.0.1
- phan/phan: ^6.0.0
- phpstan/phpstan: ^2.0
- phpstan/phpstan-strict-rules: ^2.0
- phpunit/phpunit: > 9.6.15 < 9.6.33
- psalm/plugin-phpunit: ^0.19
- sabre/event: >= 5.1.6
- symfony/filesystem: >= 5.4.45
- symfony/polyfill-php83: ^1.32
- vimeo/psalm: >= 6.0.0 < 6.15.0
This package is auto-updated.
Last update: 2026-07-11 20:53:36 UTC
README
Provides a PHP CodeSniffer ruleset for the MO4 coding standard
MO4 Coding Standard
The MO4 Coding Standard is an extension of the Symfony Coding Standard and adds following rules:
MO4.Arrays.ArrayDoubleArrowAlignment
- In associative arrays, the
=>operators must be aligned. - In arrays, the key and
=>operator must be on the same line.
MO4.Arrays.MultiLineArray
- In multi line arrays, the opening bracket must be followed by newline.
- In multi line arrays, the closing bracket must be in own line.
- In multi line arrays, the elements must be indented.
MO4.Commenting.PropertyComment
- doc blocks of class properties must be multiline and have exactly one
@varannotation
MO4.Formatting.UnnecessaryNamespaceUsage
- The imported class name must be used, when it was imported with a
usestatement.
MO4.Strings.VariableInDoubleQuotedString
- Interpolated variables in double quoted strings must be surrounded by
{ }, e.g.{$VAR}instead of$VAR.
MO4.WhiteSpace.ConstantSpacing
- const must be followed by a single space.
MO4.WhiteSpace.MultipleEmptyLines
- No more than one empty consecutive line is allowed. Taken from mediawiki/mediawiki-codesniffer.
Further rules (imported from other standards)
- See
MO4/ruleset.xml, which has each imported rule commented.
Note that with this ruleset, the following Symfony Coding Standard rules are not enforced:
- "
add doc blocks for all classes": the doc block for classes can be omitted, if they add no value - "
the license block has to be present at the top of every PHP file, before the namespace": the license block can be omitted
Most of the issues can be auto-fixed with phpcbf.
Requires
Installation
Composer
Using Composer is the preferred way.
-
Add the MO4 coding standard to
composer.jsoncomposer require --dev mayflower/mo4-coding-standard -
Profit
./vendor/bin/phpcs --standard=MO4 path/to/my/file.php -
Optionally, you might set MO4 as default coding standard
./vendor/bin/phpcs --config-set default_standard MO4
Source
-
Checkout this repository
git clone https://github.com/mayflower/mo4-coding-standard.git -
Install dependencies
composer install -
Check, that Symfony and MO4 are listed as coding standards
./vendor/bin/phpcs -i -
Profit
./vendor/bin/phpcs --standard=MO4 path/to/my/file.php -
Optionally, you might set MO4 as default coding standard
./vendor/bin/phpcs --config-set default_standard MO4
Troubleshooting
If phpcs complains that MO4 is not installed, please check the installed coding standards with
phpcs -i and that installed_paths is set correctly with phpcs --config-show
Dependencies
- PHP CodeSniffer
- David Joos's Symfony Coding Standard
- Composer installer for PHP_CodeSniffer coding standards
- Slevomat Coding Standard
Contributing
See CONTRIBUTING.md for information.
License
This project is licensed under the MIT license. See the LICENSE file for details.