private function getUsedVariables($node) : array
{
$variableNames = [];
if ($node instanceof Node) {
if ($node instanceof Node\Expr\Variable && is_string($node->name) && $node->name !== 'this') {
return [$node->name];
}
foreach ($node->getSubNodeNames() as $subNodeName) {
$subNode = $node->{$subNodeName};
$variableNames = array_merge($variableNames, $this->getUsedVariables($subNode));
}
} elseif (is_array($node)) {
foreach ($node as $subNode) {
$variableNames = array_merge($variableNames, $this->getUsedVariables($subNode));
}
}
return $variableNames;
}