betterNodeFinder = $betterNodeFinder; $this->nodeNameResolver = $nodeNameResolver; $this->nodeComparator = $nodeComparator; } /** * @param Variable[] $assignedVariables * @return Variable[] */ public function resolveUsedVariables(\PhpParser\Node $node, array $assignedVariables) : array { return $this->betterNodeFinder->find($node, function (\PhpParser\Node $node) use($assignedVariables) : bool { if (!$node instanceof \PhpParser\Node\Expr\Variable) { return \false; } $parentNode = $node->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::PARENT_NODE); // is the left assign - not use of one if ($parentNode instanceof \PhpParser\Node\Expr\Assign && ($parentNode->var instanceof \PhpParser\Node\Expr\Variable && $parentNode->var === $node)) { return \false; } $nodeNameResolverGetName = $this->nodeNameResolver->getName($node); // simple variable only if ($nodeNameResolverGetName === null) { return \false; } return $this->nodeComparator->isNodeEqual($node, $assignedVariables); }); } }