diff --git a/packages/Doctrine/src/AbstractRector/DoctrineTrait.php b/packages/Doctrine/src/AbstractRector/DoctrineTrait.php index 0a975fb29a6..96432466597 100644 --- a/packages/Doctrine/src/AbstractRector/DoctrineTrait.php +++ b/packages/Doctrine/src/AbstractRector/DoctrineTrait.php @@ -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); diff --git a/packages/Doctrine/src/PhpDocParser/DoctrineDocBlockResolver.php b/packages/Doctrine/src/PhpDocParser/DoctrineDocBlockResolver.php index d58d27d9859..f64ac899b7c 100644 --- a/packages/Doctrine/src/PhpDocParser/DoctrineDocBlockResolver.php +++ b/packages/Doctrine/src/PhpDocParser/DoctrineDocBlockResolver.php @@ -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) {