rector/packages/PostRector/Rector/ClassRenamingPostRector.php
Tomas Votruba 5c17ab737b Updated Rector to commit a41384bc00
a41384bc00 Fix doc importing on Doctrine annotation class rename (#264)
2021-06-22 10:43:16 +00:00

54 lines
1.8 KiB
PHP

<?php
declare (strict_types=1);
namespace Rector\PostRector\Rector;
use PhpParser\Node;
use Rector\Core\Configuration\RenamedClassesDataCollector;
use Rector\Renaming\NodeManipulator\ClassRenamer;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
final class ClassRenamingPostRector extends \Rector\PostRector\Rector\AbstractPostRector
{
/**
* @var \Rector\Renaming\NodeManipulator\ClassRenamer
*/
private $classRenamer;
/**
* @var \Rector\Core\Configuration\RenamedClassesDataCollector
*/
private $renamedClassesDataCollector;
public function __construct(\Rector\Renaming\NodeManipulator\ClassRenamer $classRenamer, \Rector\Core\Configuration\RenamedClassesDataCollector $renamedClassesDataCollector)
{
$this->classRenamer = $classRenamer;
$this->renamedClassesDataCollector = $renamedClassesDataCollector;
}
public function getPriority() : int
{
// must be run before name importing, so new names are imported
return 650;
}
public function enterNode(\PhpParser\Node $node) : ?\PhpParser\Node
{
$oldToNewClasses = $this->renamedClassesDataCollector->getOldToNewClasses();
if ($oldToNewClasses === []) {
return $node;
}
return $this->classRenamer->renameNode($node, $oldToNewClasses);
}
public function getRuleDefinition() : \Symplify\RuleDocGenerator\ValueObject\RuleDefinition
{
return new \Symplify\RuleDocGenerator\ValueObject\RuleDefinition('Rename references for classes that were renamed during Rector run', [new \Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample(<<<'CODE_SAMPLE'
function (OriginalClass $someClass)
{
}
CODE_SAMPLE
, <<<'CODE_SAMPLE'
function (RenamedClass $someClass)
{
}
CODE_SAMPLE
)]);
}
}