mirror of
https://github.com/rectorphp/rector.git
synced 2025-02-24 03:35:01 +01:00
52 lines
1.4 KiB
PHP
52 lines
1.4 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Rector\Naming\ValueObjectFactory;
|
|
|
|
use PhpParser\Node\Stmt\ClassLike;
|
|
use PhpParser\Node\Stmt\Property;
|
|
use Rector\Naming\ValueObject\PropertyRename;
|
|
use Rector\NodeNameResolver\NodeNameResolver;
|
|
use Rector\NodeTypeResolver\Node\AttributeKey;
|
|
|
|
/**
|
|
* @see \Rector\Tests\Naming\ValueObjectFactory\PropertyRenameFactory\PropertyRenameFactoryTest
|
|
*/
|
|
final class PropertyRenameFactory
|
|
{
|
|
/**
|
|
* @var NodeNameResolver
|
|
*/
|
|
private $nodeNameResolver;
|
|
|
|
public function __construct(NodeNameResolver $nodeNameResolver)
|
|
{
|
|
$this->nodeNameResolver = $nodeNameResolver;
|
|
}
|
|
|
|
public function createFromExpectedName(Property $property, string $expectedName): ?PropertyRename
|
|
{
|
|
$currentName = $this->nodeNameResolver->getName($property);
|
|
|
|
$propertyClassLike = $property->getAttribute(AttributeKey::CLASS_NODE);
|
|
if (! $propertyClassLike instanceof ClassLike) {
|
|
return null;
|
|
}
|
|
|
|
$propertyClassLikeName = $property->getAttribute(AttributeKey::CLASS_NAME);
|
|
if ($propertyClassLikeName === null) {
|
|
return null;
|
|
}
|
|
|
|
return new PropertyRename(
|
|
$property,
|
|
$expectedName,
|
|
$currentName,
|
|
$propertyClassLike,
|
|
$propertyClassLikeName,
|
|
$property->props[0]
|
|
);
|
|
}
|
|
}
|