flatMatcherDefinitions once * * @param array $matcherDefinitions Incoming main configuration */ public function __construct(array $matcherDefinitions) { $this->matcherDefinitions = $matcherDefinitions; $this->validateMatcherDefinitions(['numberOfMandatoryArguments', 'maximumNumberOfArguments']); } /** * Called by PhpParser. * Test for "removedFunction()" (strong match) */ public function enterNode(Node $node): null { // Match method call (not static) if (!$this->isFileIgnored($node) && !$this->isLineIgnored($node) && $node instanceof FuncCall && $node->name instanceof FullyQualified && array_key_exists($node->name->toString(), $this->matcherDefinitions) ) { $functionName = $node->name->toString(); $matchDefinition = $this->matcherDefinitions[$functionName]; $numberOfArguments = count($node->args); $isArgumentUnpackingUsed = $this->isArgumentUnpackingUsed($node->args); if ($isArgumentUnpackingUsed || ($numberOfArguments >= $matchDefinition['numberOfMandatoryArguments'] && $numberOfArguments <= $matchDefinition['maximumNumberOfArguments']) ) { $this->matches[] = [ 'restFiles' => $matchDefinition['restFiles'], 'line' => $node->getAttribute('startLine'), 'message' => 'Call to function "' . $functionName . '"', 'indicator' => 'strong', ]; } } return null; } }