mirror of
https://github.com/rectorphp/rector.git
synced 2025-03-14 04:19:44 +01:00
Add TypeAnalyzerTrait
This commit is contained in:
parent
24c99f488f
commit
68f4efc502
@ -12,6 +12,8 @@ use Rector\Contract\Rector\PhpRectorInterface;
|
||||
|
||||
abstract class AbstractRector extends NodeVisitorAbstract implements PhpRectorInterface
|
||||
{
|
||||
use TypeAnalyzerTrait;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
|
41
src/Rector/TypeAnalyzerTrait.php
Normal file
41
src/Rector/TypeAnalyzerTrait.php
Normal 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);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user