rector/rules/CodeQuality/NodeFactory/MissingPropertiesFactory.php
Tomas Votruba c726969380 Updated Rector to commit fc10fce13dcf9767f54e4202b509020fed338645
fc10fce13d [Rectify] [Php81] Enable Rectify on Readonly Property only (#1384)
2021-12-04 12:47:17 +00:00

45 lines
1.5 KiB
PHP

<?php
declare (strict_types=1);
namespace Rector\CodeQuality\NodeFactory;
use PhpParser\Node\Stmt\Property;
use PHPStan\Type\Type;
use Rector\Core\PhpParser\Node\NodeFactory;
final class MissingPropertiesFactory
{
/**
* @readonly
* @var \Rector\Core\PhpParser\Node\NodeFactory
*/
private $nodeFactory;
/**
* @readonly
* @var \Rector\CodeQuality\NodeFactory\PropertyTypeDecorator
*/
private $propertyTypeDecorator;
public function __construct(\Rector\Core\PhpParser\Node\NodeFactory $nodeFactory, \Rector\CodeQuality\NodeFactory\PropertyTypeDecorator $propertyTypeDecorator)
{
$this->nodeFactory = $nodeFactory;
$this->propertyTypeDecorator = $propertyTypeDecorator;
}
/**
* @param array<string, Type> $fetchedLocalPropertyNameToTypes
* @param string[] $propertyNamesToComplete
* @return Property[]
*/
public function create(array $fetchedLocalPropertyNameToTypes, array $propertyNamesToComplete) : array
{
$newProperties = [];
foreach ($fetchedLocalPropertyNameToTypes as $propertyName => $propertyType) {
if (!\in_array($propertyName, $propertyNamesToComplete, \true)) {
continue;
}
$property = $this->nodeFactory->createPublicProperty($propertyName);
$this->propertyTypeDecorator->decorateProperty($property, $propertyType);
$newProperties[] = $property;
}
return $newProperties;
}
}