php-extension-check/src/Parser/Visitors/ConstantCollector.php

36 lines
773 B
PHP

<?php
declare(strict_types=1);
namespace Fbrinker\ExtensionCheck\Parser\Visitors;
use PhpParser\Node;
use PhpParser\NodeVisitorAbstract;
class ConstantCollector extends NodeVisitorAbstract implements CollectorInferface
{
/**
* @var array<string,bool> $constants
*/
private $constants = [];
public function getCollected(): array
{
$list = array_keys($this->constants);
natcasesort($list);
return array_values($list);
}
public function enterNode(Node $node)
{
if ($node instanceof Node\Expr\ConstFetch) {
if (!empty($node->name) && $node->name instanceof Node\Name) {
$this->constants[$node->name->toString()] = true;
}
}
return null;
}
}