MethodCallStaticMatcher extends AbstractCoreMatcher

Find usages of static method calls which were removed / deprecated.

This match is performed either is case of a direct "foo\bar::aMethod()" call as "strong" match, or as only "::aMethod()" as "weak" match.

As additional indicator, the number of required, mandatory arguments is recognized: If calling a static method as "$foo::aMethod($arg1), but the method needs two arguments, this is not considered a match. This would have raised a fatal PHP error anyway and this is nothing we test here.

Internal

This class is only meant to be used within EXT:install and is not part of the TYPO3 Core API.

Table of Contents

Constants

NODE_RESOLVED_AS  = 'nodeResolvedAs'

Properties

$currentCodeLine  : int
$flatMatcherDefinitions  : array<string|int, mixed>
Helper property containing an array derived from $this->matcherDefinitions created in __construct() if needed.
$isCurrentLineIgnored  : bool
$isFullFileIgnored  : bool
$matcherDefinitions  : array<string|int, mixed>
Incoming main configuration array.
$matches  : array<string|int, mixed>

Methods

__construct()  : mixed
Validate config and prepare weak matcher array
enterNode()  : null
Called by PhpParser.
getMatches()  : array<string|int, mixed>
Return list of matches after processing
initializeFlatMatcherDefinitions()  : mixed
Initialize helper lookup array $this->flatMatcherDefinitions.
isArgumentUnpackingUsed()  : bool
Test if one argument is given as "...$someArray".
isFileIgnored()  : bool
Return true if the node is ignored since the entire file is ignored.
isLineIgnored()  : bool
Returns true if a comment before a statement is marked as "@extensionScannerIgnoreLine"
validateMatcherDefinitionKeys()  : void
validateMatcherDefinitions()  : mixed
Some matcher need specific keys in the array definition to work properly.

Constants

NODE_RESOLVED_AS

public mixed NODE_RESOLVED_AS = 'nodeResolvedAs'

Properties

$currentCodeLine

protected int $currentCodeLine = 0

Helper variable for ignored line detection

$flatMatcherDefinitions

Helper property containing an array derived from $this->matcherDefinitions created in __construct() if needed.

protected array<string|int, mixed> $flatMatcherDefinitions = []

$isCurrentLineIgnored

protected bool $isCurrentLineIgnored = false

True if line with $lastIgnoredLineNumber is ignored

$isFullFileIgnored

protected bool $isFullFileIgnored = false

True if the entire file is ignored due to a @extensionScannerIgnoreFile class comment

$matcherDefinitions

Incoming main configuration array.

protected array<string|int, mixed> $matcherDefinitions = []

$matches

protected array<string|int, mixed> $matches = []

List of accumulated matches

Methods

__construct()

Validate config and prepare weak matcher array

public __construct(array<string|int, mixed> $matcherDefinitions) : mixed
Parameters
$matcherDefinitions : array<string|int, mixed>

Incoming main configuration

enterNode()

Called by PhpParser.

public enterNode(Node $node) : null

Test for "foo\bar::deprecated()" (strong match) Test for "::deprecated()" (weak match)

Parameters
$node : Node
Return values
null

getMatches()

Return list of matches after processing

public getMatches() : array<string|int, mixed>
Return values
array<string|int, mixed>

initializeFlatMatcherDefinitions()

Initialize helper lookup array $this->flatMatcherDefinitions.

protected initializeFlatMatcherDefinitions() : mixed

For class\name->foo matcherDefinitions, it creates a helper array containing only the method name as array keys for "weak" matches.

If methods with the same name from different classes are defined, a "candidate" array is created containing details of single possible matches for further analysis.

Tags
throws
RuntimeException

isArgumentUnpackingUsed()

Test if one argument is given as "...$someArray".

protected isArgumentUnpackingUsed([array<string|int, mixed> $arguments = [] ]) : bool

If so, it kinda defeats any "argument count" approach.

Parameters
$arguments : array<string|int, mixed> = []

List of arguments

Return values
bool

isFileIgnored()

Return true if the node is ignored since the entire file is ignored.

protected isFileIgnored(Node $node) : bool

Sets ignore status if a class node is given having the annotation.

Parameters
$node : Node
Return values
bool

isLineIgnored()

Returns true if a comment before a statement is marked as "@extensionScannerIgnoreLine"

protected isLineIgnored(Node $node) : bool
Parameters
$node : Node
Return values
bool

validateMatcherDefinitionKeys()

protected validateMatcherDefinitionKeys(string $key, array<string|int, mixed> $matcherDefinition[, array<string|int, mixed> $requiredArrayKeys = [] ]) : void
Parameters
$key : string
$matcherDefinition : array<string|int, mixed>
$requiredArrayKeys : array<string|int, mixed> = []

validateMatcherDefinitions()

Some matcher need specific keys in the array definition to work properly.

protected validateMatcherDefinitions([array<string|int, mixed> $requiredArrayKeys = [] ]) : mixed

This method is called typically in __construct() of a matcher to verify these are given. This method is a measure against broken core configuration. It should be pretty quick and is only called in __construct() once, no kitten should be harmed.

This method works on $this->matcherDefinitions.

Parameters
$requiredArrayKeys : array<string|int, mixed> = []

List of required keys for single matchers

Tags
throws
RuntimeException

        
On this page

Search results