Releases
3.5.3
The PHP 7.4 T_FN
token has been made available for older versions
T_FN
represents the fn
string used for arrow functions
The double arrow becomes the scope opener, and uses a new T_FN_ARROW
token type
The token after the statement (normally a semicolon) becomes the scope closer
The token is also associated with the opening and closing parenthesis of the statement
Any functions named fn
will have a T_FN token
for the function name, but have no scope information
Thanks to Michał Bundyra for the help with this change
PHP 7.4 numeric separators are now tokenized in the same way when using older PHP versions
Previously, a number like 1_000
would tokenize as T_LNUMBER (1), T_STRING (_000)
Now, the number tokenizes as T_LNUMBER (1_000)
Sniff developers should consider how numbers with underscores impact their custom sniffs
The PHPCS file cache now takes file permissions into account
The cache is now invalidated for a file when its permissions are changed
File::getMethodParameters()
now supports arrow functions
File::getMethodProperties()
now supports arrow functions
Added Fixer::changeCodeBlockIndent()
to change the indent of a code block while auto-fixing
Can be used to either increase or decrease the indent
Useful when moving the start position of something like a closure, where you want the content to also move
Added Generic.Files.ExecutableFile
sniff
Ensures that files are not executable
Thanks to Matthew Peveler for the contribution
Generic.CodeAnalysis.EmptyPhpStatement
now reports unnecessary semicolons after control structure closing braces
Thanks to Vincent Langlet for the patch
Generic.PHP.LowerCaseKeyword
now enforces that the fn
keyword is lowercase
Thanks to Michał Bundyra for the patch
Generic.WhiteSpace.ScopeIndent
now supports static arrow functions
PEAR.Functions.FunctionCallSignature
now adjusts the indent of function argument contents during auto-fixing
Previously, only the first line of an argument was changed, leading to inconsistent indents
This change also applies to PSR2.Methods.FunctionCallSignature
PSR2.ControlStructures.ControlStructureSpacing
now checks whitespace before the closing parenthesis of multi-line control structures
Previously, it incorrectly applied the whitespace check for single-line definitions only
PSR12.Functions.ReturnTypeDeclaration
now checks the return type of arrow functions
Thanks to Michał Bundyra for the patch
PSR12.Traits.UseDeclaration
now ensures all trait import statements are grouped together
Previously, the trait import section of the class ended when the first non-import statement was found
Checking now continues throughout the class to ensure all statements are grouped together
This also ensures that empty lines are not requested after an import statement that isn't the last one
Squiz.Functions.LowercaseFunctionKeywords
now enforces that the fn
keyword is lowercase
Thanks to Michał Bundyra for the patch
Fixed bug #2586 : Generic.WhiteSpace.ScopeIndent false positives when indenting open tags at a non tab-stop
Fixed bug #2638 : Squiz.CSS.DuplicateClassDefinitionSniff sees comments as part of the class name
Thanks to Raphael Horber for the patch
Fixed bug #2640 : Squiz.WhiteSpace.OperatorSpacing false positives for some negation operators
Thanks to Jakub Chábek and Juliette Reinders Folmer for the patch
Fixed bug #2674 : Squiz.Functions.FunctionDeclarationArgumentSpacing prints wrong argument name in error message
Fixed bug #2676 : PSR12.Files.FileHeader locks up when file ends with multiple inline comments
Fixed bug #2678 : PSR12.Classes.AnonClassDeclaration incorrectly enforcing that closing brace be on a line by itself
Fixed bug #2685 : File::getMethodParameters() setting typeHintEndToken for vars with no type hint
Thanks to Juliette Reinders Folmer for the patch
Fixed bug #2694 : AbstractArraySniff produces invalid indices when using ternary operator
Thanks to Michał Bundyra for the patch
Fixed bug #2702 : Generic.WhiteSpace.ScopeIndent false positive when using ternary operator with short arrays
You can’t perform that action at this time.