Add TypeAnalyzerTrait

This commit is contained in:
Tomas Votruba 2018-10-14 18:31:07 +08:00
parent 24c99f488f
commit 68f4efc502
2 changed files with 43 additions and 0 deletions

View File

@ -12,6 +12,8 @@ use Rector\Contract\Rector\PhpRectorInterface;
abstract class AbstractRector extends NodeVisitorAbstract implements PhpRectorInterface
{
use TypeAnalyzerTrait;
/**
* @var bool
*/

View File

@ -0,0 +1,41 @@
<?php declare(strict_types=1);
namespace Rector\Rector;
use PhpParser\Node;
use Rector\NodeTypeResolver\NodeTypeResolver;
/**
* This could be part of @see AbstractRector, but decopuling to trait
* makes clear what code has 1 purpose.
*/
trait TypeAnalyzerTrait
{
/**
* @var NodeTypeResolver
*/
protected $nodeTypeResolver;
/**
* @required
*/
public function setNodeTypeResolver(NodeTypeResolver $nodeTypeResolver): void
{
$this->nodeTypeResolver = $nodeTypeResolver;
}
public function isType(Node $node, string $type): bool
{
$nodeTypes = $this->nodeTypeResolver->resolve($node);
return in_array($type, $nodeTypes, true);
}
/**
* @param string[] $types
*/
public function isTypes(Node $node, array $types): bool
{
$nodeTypes = $this->nodeTypeResolver->resolve($node);
return (bool) array_intersect($types, $nodeTypes);
}
}