PHP 8.1 Language Feature Support
PHP_CodeSniffer has run correctly under PHP 8.1 since PHP 8 support was added, but it has not supported new 8.1 language features until this release. Version 3.7.0 adds support for the following PHP 8.1 language features:
- Enums
- Explicit octal notation
- Readonly properties
- Intersection types
- The
never
type
Note: Standards and sniffs included with PHP_CodeSniffer have been updated to support these language features, but external standards and sniffs may need updating before they are able to detect them correctly.
Changelog
- Added support for PHP 8.1 explicit octal notation
- This new syntax has been backfilled for PHP versions less than 8.1
- Thanks to Mark Baker (@MarkBaker) for the patch
- Thanks to Juliette Reinders Folmer (@jrfnl) for additional fixes
- Added support for PHP 8.1 enums
- Added support for the PHP 8.1 readonly token
- Tokenzing of the readonly keyword has been backfilled for PHP versions less than 8.1
- Thanks to Jaroslav Hanslík (@kukulich) for the patch
- Added support for PHP 8.1 intersection types
- Includes a new
T_TYPE_INTERSECTION
token to represent the ampersand character inside intersection types - Thanks to Jaroslav Hanslík (@kukulich) for the patch
- Includes a new
File::getMethodParameters
now supports the new PHP 8.1 readonly token- When constructor property promotion is used, a new
property_readonly
array index is included in the return value- This is a boolean value indicating if the property is readonly
- If the readonly token is detected, a new
readonly_token
array index is included in the return value- This contains the token index of the readonly keyword
- Thanks to Juliette Reinders Folmer (@jrfnl) for the patch
- When constructor property promotion is used, a new
- Support for new PHP 8.1 readonly keyword has been added to the following sniffs:
Generic.PHP.LowerCaseKeyword
PSR2.Classes.PropertyDeclaration
Squiz.Commenting.BlockComment
Squiz.Commenting.DocCommentAlignment
Squiz.Commenting.VariableComment
Squiz.WhiteSpace.ScopeKeywordSpacing
- Thanks to Juliette Reinders Folmer (@jrfnl) for the patches
- The parallel feature is now more efficient and runs faster in some situations due to improved process management
- Thanks to Sergei Morozov (@morozov) for the patch
- The list of installed coding standards now has consistent ordering across all platforms
- Thanks to Juliette Reinders Folmer (@jrfnl) for the patch
Generic.PHP.UpperCaseConstant
andGeneric.PHP.LowerCaseConstant
now ignore type declarations- These sniffs now only report errors for
true
/false
/null
when used as values - Thanks to Juliette Reinders Folmer (@jrfnl) for the patch
- These sniffs now only report errors for
Generic.PHP.LowerCaseType
now supports the PHP 8.1never
type- Thanks to Jaroslav Hanslík (@kukulich) for the patch
- Fixed bug #3502 : A match statement within an array produces Squiz.Arrays.ArrayDeclaration.NoKeySpecified
- Fixed bug #3503 : Squiz.Commenting.FunctionComment.ThrowsNoFullStop false positive when one line
@throw
- Fixed bug #3505 : The nullsafe operator is not counted in Generic.Metrics.CyclomaticComplexity
- Thanks to Mark Baker (@MarkBaker) for the patch
- Fixed bug #3526 : PSR12.Properties.ConstantVisibility false positive when using public final const syntax
- Thanks to Juliette Reinders Folmer (@jrfnl) for the patch
- Fixed bug #3530 : Line indented incorrectly false positive when using match-expression inside switch case
- Fixed bug #3534 : Name of typed enum tokenized as
T_GOTO_LABEL
- Thanks to Juliette Reinders Folmer (@jrfnl) for the patch
- Fixed bug #3546 : Tokenizer/PHP: bug fix - parent/static keywords in class instantiations
- Thanks to Juliette Reinders Folmer (@jrfnl) for the patch
- Fixed bug #3550 : False positive from PSR2.ControlStructures.SwitchDeclaration.TerminatingComment when using trailing comment
- Thanks to Juliette Reinders Folmer (@jrfnl) for the patch
- Fixed bug #3575: Squiz.Scope.MethodScope misses visibility keyword on previous line
- Thanks to Juliette Reinders Folmer (@jrfnl) for the patch
- Fixed bug #3604: Tokenizer/PHP: bug fix for double quoted strings using
${
- Thanks to Juliette Reinders Folmer (@jrfnl) for the patch