Releases: PHPCSStandards/PHPCSExtra
Releases · PHPCSStandards/PHPCSExtra
1.4.0 - 2025-06-14
Added
- All sniffs: compatibility with the new PHP_CodeSniffer
4.x
branch in anticipation of the PHP_CodeSniffer 4.0 release. #367
PHPCSExtra should now be fully compatible with PHP_CodeSniffer 4.0. If you still find an issue, please report it.
Changed
Other
- Composer: The minimum
PHP_CodeSniffer
requirement has been updated to^3.13.0
(was^3.12.1
). #361 - Composer: The minimum
PHPCSUtils
requirement has been updated to^1.1.0
(was^1.0.12
). #361 - Various housekeeping.
Deprecated
Universal
Universal.WhiteSpace.PrecisionAlignment
: support for scanning JS/CSS files via this sniff is now deprecated. #367
Fixed
Universal
Universal.Arrays.DuplicateArrayKey
: false positives for numeric strings with leading/trailing underscores. Fixed via the update to PHPCSUtils 1.1.0. #363Universal.Arrays.DuplicateArrayKey
: false negatives for fully qualifiedtrue
/false
/null
arrays keys. Fixed via the update to PHPCSUtils 1.1.0. #363Universal.WhiteSpace.CommaSpacing
: wrong errorcode for comma's in closure use statements after the update to PHPCSUtils 1.1.0. #362
1.3.1 - 2025-06-08
Changed
Other
- Composer: The minimum
PHPCSUtils
requirement has been updated to^1.0.12
(was^1.0.9
). #346 - Various housekeeping.
Fixed
Universal
Universal.UseStatements.DisallowMixedGroupUse
: the fixer could get confused when the "base" name for the group name contained a leading backslash, leading to parse errors in the fixed code. #350
1.3.0 - 2025-04-21
Added
Universal
- 🔧 📚 New
Universal.PHP.NoFQNTrueFalseNull
sniff to forbid usingtrue
,false
andnull
as fully qualified constants. Thanks @rodrigoprimo for reviewing. #327 Universal.Operators.TypeSeparatorSpacing
: support for checking the spacing around the parentheses used in PHP 8.2+ DNF types. #329
Changed
Universal
- The
Universal.WhiteSpace.DisallowInlineTabs
sniff will now also check for inline tabs in heredoc/nowdoc openers and between theyield
andfrom
keywords. #320
Other
1.2.1 - 2023-12-08
Changed
Other
- Composer: The minimum
PHP_CodeSniffer
requirement has been updated to^3.8.0
(was^3.7.2
). #298 - Composer: The minimum
PHPCSUtils
requirement has been updated to^1.0.9
(was^1.0.8
). #298
Please ensure you run composer update phpcsstandards/phpcsextra --with-dependencies
to benefit from this.
1.2.0 - 2023-12-02
Added
Universal
- 🔧 📚 New
Universal.CodeAnalysis.NoDoubleNegative
sniff to detect double negatives (!!) and advise to use a boolean cast instead. Thanks @diedexx for reviewing. #277 - 🔧 📚 New
Universal.Operators.ConcatPosition
sniff to enforce that the concatenation operator for multi-line concatenations is in a preferred position, either always at the start of the next line or always at the end of the previous line. #294 - 🔧 📊 📚 New
Universal.PHP.LowercasePHPTag
sniff to enforce that the "PHP" in a PHP open tag is lowercase. Thanks @fredden for reviewing. #276
Changed
NormalizedArrays
NormalizedArrays.Arrays.CommaAfterLast
: the sniff now has two extra error codes to distinguish between multi-line arrays with the last array item on the same line as the array closer vs the last array item being on a line before the array closer. Thanks @stronk7 for suggesting and patching this. #283, #284
These new error codes allow for selectively excluding that specific situation from triggering the sniff.
The new error codes areFoundMultiLineCloserSameLine
(formultiLine="forbid"
) andMissingMultiLineCloserSameLine
(formultiLine="enforce"
).
The pre-existingFoundMultiLine
andFoundSingleLine
error codes continue to be used for multi-line arrays with the last array item on a different line than the array closer.
Other
- Various housekeeping.
1.1.2 - 2023-09-21
1.1.1 - 2023-08-26
Changed
Modernize
Modernize.FunctionCalls.Dirname
: the sniff will now respect a potentially setphp_version
configuration option and only report on modernizations which are possible on the configuredphp_version
. #261
If thephp_version
is not set, the sniff will continue to report on all modernization options.
Other
- Various documentation improvements. Props in part to @szepeviktor.
- Improved defensive coding in select places.
- Various housekeeping.
1.1.0 - 2023-07-19
Added
Universal
- 🔧 📚 New
Universal.CodeAnalysis.NoEchoSprintf
sniff to detect use of the inefficientecho [v]sprintf(...);
combi and recommends using[v]printf()
instead. #242 - 📊 📚 New
Universal.FunctionDeclarations.NoLongClosures
sniff to detect "long" closures and recommend using a named function instead. #240
The sniff offers the following properties to influence its behaviour:recommendedLines
(defaults to5
),maxLines
(defaults to8
),ignoreCommentLines
(defaults totrue
) andignoreEmptyLines
(defaults totrue
). - 🔧 📊 📚 New
Universal.FunctionDeclarations.RequireFinalMethodsInTraits
sniff to enforce non-private, non-abstract methods in traits to be declared asfinal
. #243, #245
There is a separateNonFinalMagicMethodFound
error code for magic methods to allow those to be excluded from the check. - 🔧 📊 📚 New
Universal.UseStatements.DisallowMixedGroupUse
sniff to disallow group use statements which import a combination of namespace/OO construct, functions and/or constants in one statement. #241, #246
Note: the fixer will use a semi-standardized format for group use statements. If there are more specific requirements for the formatting of group use statements, the ruleset configurator should ensure that additional sniffs are included in the ruleset to enforce the required format. - 🔧 📊 📚 New
Universal.UseStatements.KeywordSpacing
sniff to enforce the use of a single space after theuse
,function
,const
keywords and both before and after theas
keyword in importuse
statements. #247
The sniff has modular error codes to allow for disabling individual checks. - 🔧 📚 New
Universal.UseStatements.NoUselessAliases
sniff to detect useless aliases (aliasing something to its original name) in import use statements. #244
Note: as OO and function names in PHP are case-insensitive, aliasing to the same name, using a different case is also considered useless. - 🔧 📊 📚 New
Universal.WhiteSpace.CommaSpacing
sniff to enforce that there is no space before a comma and exactly one space, or a new line, after a comma. #254
Additionally, the sniff also enforces that the comma should follow the code and not be placed after a trailing comment.
The sniff has modular error codes to allow for disabling individual checks and checks in certain contexts.
The sniff will respect a potentially setphp_version
configuration option when deciding how to handle the spacing after a heredoc/nowdoc closer.
Changed
Universal
- Minor performance improvements for the
Universal.Arrays.DuplicateArrayKey
and theUniversal.CodeAnalysis.ConstructorDestructorReturn
sniffs. #251, #252