add isInDoctrineEntityClass() method

This commit is contained in:
Tomas Votruba 2019-09-19 18:11:40 +02:00
parent 86dac89caa
commit a49bac510e
2 changed files with 19 additions and 0 deletions

View File

@ -2,6 +2,7 @@
namespace Rector\Doctrine\AbstractRector;
use PhpParser\Node;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\Property;
use Rector\Doctrine\PhpDocParser\DoctrineDocBlockResolver;
@ -32,6 +33,11 @@ trait DoctrineTrait
return $this->doctrineDocBlockResolver->isDoctrineEntityClass($class);
}
protected function isInDoctrineEntityClass(Node $node): bool
{
return $this->doctrineDocBlockResolver->isInDoctrineEntityClass($node);
}
protected function getTargetEntity(Property $property): ?string
{
return $this->doctrineDocBlockResolver->getTargetEntity($property);

View File

@ -4,12 +4,14 @@ namespace Rector\Doctrine\PhpDocParser;
use PhpParser\Node;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassLike;
use PhpParser\Node\Stmt\Property;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
use Rector\DoctrinePhpDocParser\Ast\PhpDoc\Class_\EntityTagValueNode;
use Rector\DoctrinePhpDocParser\Ast\PhpDoc\Property_\ColumnTagValueNode;
use Rector\DoctrinePhpDocParser\Ast\PhpDoc\Property_\IdTagValueNode;
use Rector\DoctrinePhpDocParser\Contract\Ast\PhpDoc\DoctrineRelationTagValueNodeInterface;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\NodeTypeResolver\PhpDoc\NodeAnalyzer\DocBlockManipulator;
final class DoctrineDocBlockResolver
@ -97,6 +99,17 @@ final class DoctrineDocBlockResolver
return (bool) $propertyPhpDocInfo->getByType(DoctrineRelationTagValueNodeInterface::class);
}
public function isInDoctrineEntityClass(Node $node): bool
{
/** @var ClassLike|null $classNode */
$classNode = $node->getAttribute(AttributeKey::CLASS_NODE);
if (! $classNode instanceof Class_) {
return false;
}
return $this->isDoctrineEntityClass($classNode);
}
private function getPhpDocInfo(Node $node): ?PhpDocInfo
{
if ($node->getDocComment() === null) {