rector/rules/Privatization/NodeAnalyzer/EventSubscriberMethodNamesResolver.php
Tomas Votruba 207c620c29 Updated Rector to commit 311a96fbf8a6f71faee4620db786669c76bbf015
311a96fbf8 bump php-parser to 4.11, phpstan to 0.12.91 (#402)
2021-07-08 00:06:13 +00:00

39 lines
1.3 KiB
PHP

<?php
declare (strict_types=1);
namespace Rector\Privatization\NodeAnalyzer;
use PhpParser\Node;
use PhpParser\Node\Expr\ArrayItem;
use PhpParser\Node\Scalar\String_;
use PhpParser\Node\Stmt\ClassMethod;
use RectorPrefix20210708\Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser;
final class EventSubscriberMethodNamesResolver
{
/**
* @var \Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser
*/
private $simpleCallableNodeTraverser;
public function __construct(\RectorPrefix20210708\Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser $simpleCallableNodeTraverser)
{
$this->simpleCallableNodeTraverser = $simpleCallableNodeTraverser;
}
/**
* @return string[]
*/
public function resolveFromClassMethod(\PhpParser\Node\Stmt\ClassMethod $classMethod) : array
{
$methodNames = [];
$this->simpleCallableNodeTraverser->traverseNodesWithCallable((array) $classMethod->stmts, function (\PhpParser\Node $node) use(&$methodNames) {
if (!$node instanceof \PhpParser\Node\Expr\ArrayItem) {
return null;
}
if (!$node->value instanceof \PhpParser\Node\Scalar\String_) {
return null;
}
$methodNames[] = $node->value->value;
});
return $methodNames;
}
}