✨ New ObjectDeclarations::getDeclared*() utility methods #592
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.
This commit adds a new set of utility methods to the
ObjectDeclarations
class:getDeclaredConstants(File $phpcsFile, int $stackPtr): array
getDeclaredEnumCases(File $phpcsFile, int $stackPtr): array
getDeclaredProperties(File $phpcsFile, int $stackPtr): array
getDeclaredMethods(File $phpcsFile, int $stackPtr): array
private
)analyzeOOStructure(File $phpcsFile, int $stackPtr): array
These methods allow for retrieving an array with the names of all constants, enum cases, properties and methods as the keys and the stack pointer to the relevant
T_CONST
,T_ENUM_CASE
,T_VARIABLE
orT_FUNCTION
token as the value.As these methods all used the same
analyzeOOStructure()
method under the hood and the results of that method are cached, the method are highly optimized for performance.If a sniff needs to search for a named constant/enum case/property/method in an OO structure, in most cases, these methods should be the recommended way for finding the declaration, instead of the sniff attempting to do this itself.
Includes extensive unit tests.
Closes #124