PHP 8.3 | PSR12/ClassInstantiation: allow for readonly anonymous classes #324
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
The sniff is supposed to ignore anonymous class instantiations completely as otherwise it could create a conflict between this sniff and the PSR12 sniff checking anonymous class declarations.
As things were, however, the sniff would add parentheses after the
new
keyword or after an attribute if an anonymous class was declared asreadonly
, as allowed since PHP 8.3.Fixed now.
Includes minor simplification - the sniff would previously jump over attributes attached to anonymous classes to get to the
class
keyword only to bow out later for anonymous classes anyway. Now, the sniff will bow out straight away when either an attribute, thereadonly
keyword or theclass
keyword for an anonymous class declaration is encountered.As
readonly
cannot be used as class name and attributes cannot be attached to (non-anonymous) class instantiations, this should maintain the previous behaviour, while also allowing for PHP 8.3 readonly anonymous classes and it should yield a very small performance benefit as well.Includes unit tests.
Suggested changelog entry
PSR12.Classes.ClassInstantiation
sniff.Related issues/external references
Related to #106
Types of changes