2020-04-08 13:48:33 +02:00
|
|
|
<?php
|
|
|
|
|
2021-05-09 20:15:43 +00:00
|
|
|
declare (strict_types=1);
|
2020-04-08 13:48:33 +02:00
|
|
|
namespace Rector\Privatization\NodeAnalyzer;
|
|
|
|
|
|
|
|
use PhpParser\Node;
|
|
|
|
use PhpParser\Node\Expr\ArrayItem;
|
|
|
|
use PhpParser\Node\Scalar\String_;
|
|
|
|
use PhpParser\Node\Stmt\ClassMethod;
|
2021-07-01 08:50:15 +00:00
|
|
|
use RectorPrefix20210701\Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser;
|
2020-04-08 13:48:33 +02:00
|
|
|
final class EventSubscriberMethodNamesResolver
|
|
|
|
{
|
|
|
|
/**
|
2021-05-10 23:39:21 +00:00
|
|
|
* @var \Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser
|
2020-04-08 13:48:33 +02:00
|
|
|
*/
|
2021-01-16 22:45:18 +01:00
|
|
|
private $simpleCallableNodeTraverser;
|
2021-07-01 08:50:15 +00:00
|
|
|
public function __construct(\RectorPrefix20210701\Symplify\Astral\NodeTraverser\SimpleCallableNodeTraverser $simpleCallableNodeTraverser)
|
2020-04-08 13:48:33 +02:00
|
|
|
{
|
2021-01-16 22:45:18 +01:00
|
|
|
$this->simpleCallableNodeTraverser = $simpleCallableNodeTraverser;
|
2020-04-08 13:48:33 +02:00
|
|
|
}
|
|
|
|
/**
|
|
|
|
* @return string[]
|
|
|
|
*/
|
2021-05-10 22:23:08 +00:00
|
|
|
public function resolveFromClassMethod(\PhpParser\Node\Stmt\ClassMethod $classMethod) : array
|
2020-04-08 13:48:33 +02:00
|
|
|
{
|
|
|
|
$methodNames = [];
|
2021-05-10 22:23:08 +00:00
|
|
|
$this->simpleCallableNodeTraverser->traverseNodesWithCallable((array) $classMethod->stmts, function (\PhpParser\Node $node) use(&$methodNames) {
|
|
|
|
if (!$node instanceof \PhpParser\Node\Expr\ArrayItem) {
|
2021-05-09 20:15:43 +00:00
|
|
|
return null;
|
2020-04-08 13:48:33 +02:00
|
|
|
}
|
2021-05-10 22:23:08 +00:00
|
|
|
if (!$node->value instanceof \PhpParser\Node\Scalar\String_) {
|
2021-05-09 20:15:43 +00:00
|
|
|
return null;
|
|
|
|
}
|
|
|
|
$methodNames[] = $node->value->value;
|
|
|
|
});
|
2020-04-08 13:48:33 +02:00
|
|
|
return $methodNames;
|
|
|
|
}
|
|
|
|
}
|