PHP_CodeSniffer has run under PHP 8 for some time, but it has not supported all new language features until this release. Version 3.6.0 adds support for all new PHP 8 language features, including:
Attributes
Constructor property promotion
Named arguments
Union types
Match expressions
Static and Mixed return types
Note: All 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.0 union types
A new T_TYPE_UNION token is available to represent the pipe character
File::getMethodParameters(), getMethodProperties(), and getMemberProperties() will now return union types
Thanks to Juliette Reinders Folmer for the patch
Added support for PHP 8.0 named function call arguments
A new T_PARAM_NAME token is available to represent the label with the name of the function argument in it
Thanks to Juliette Reinders Folmer for the patch
Added support for PHP 8.0 attributes
The PHP-supplied T_ATTRIBUTE token marks the start of an attribute
A new T_ATTRIBUTE_END token is available to mark the end of an attribute
New attribute_owner and attribute_closer indexes are available in the tokens array for all tokens inside an attribute
Tokenizing of attributes has been backfilled for older PHP versions
The following sniffs have been updated to support attributes:
PEAR.Commenting.ClassComment
PEAR.Commenting.FileComment
PSR1.Files.SideEffects
PSR12.Files.FileHeader
Squiz.Commenting.ClassComment
Squiz.Commenting.FileComment
Squiz.WhiteSpace.FunctionSpacing
Thanks to Vadim Borodavko for the patch
Thanks to Alessandro Chitolina for the patch
Added support for PHP 8.0 dereferencing of text strings with interpolated variables
Thanks to Juliette Reinders Folmer for the patch
Added support for PHP 8.0 match expressions
Match expressions are now tokenised with parenthesis and scope openers and closers
Sniffs can listen for the T_MATCH token to process match expressions
Note that the case and default statements inside match expressions do not have scopes set
A new T_MATCH_ARROW token is available to represent the arrows in match expressions
A new T_MATCH_DEFAULT token is available to represent the default keyword in match expressions
All tokenizing of match expressions has been backfilled for older PHP versions
The following sniffs have been updated to support match expressions:
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Automerge options (never/patch/minor, and dev/runtime dependencies)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
Bumps squizlabs/php_codesniffer from 3.5.6 to 3.6.0.
Release notes
Sourced from squizlabs/php_codesniffer's releases.
... (truncated)
Commits
ffced0d
Prepare for 3.6.0 releasef14e439
Changelog for #2925fe201de
Merge branch 'specialMethod' of https://github.com/VincentLanglet/PHP_CodeSni...d96b6d8
Changelog for #329353b72cb
Merge branch 'disallow-multiple-assignments' of https://github.com/kukulich/P...ccca313
Improve check for special method and add option557756c
Squiz.PHP.DisallowMultipleAssignmentsSniff: Fixed false positive when assigme...c19a0f5
Squiz.PHP.DisallowMultipleAssignmentsSniff: Fixed false positive when assigme...2c41990
Spelling - seperator should be separator9ca9a54
Squiz.PHP.DisallowMultipleAssignmentsSniff: Ignore default value assignments ...Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Pull request limits (per update run and/or open at any time) - Automerge options (never/patch/minor, and dev/runtime dependencies) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired)