PATH:
opt
/
cpanel
/
ea-wappspector
/
vendor
/
rector
/
rector
/
rules
/
Naming
/
Guard
/
PropertyConflictingNameGuard
<?php declare (strict_types=1); namespace Rector\Naming\Guard\PropertyConflictingNameGuard; use PhpParser\Node\Stmt\ClassLike; use Rector\Naming\ExpectedNameResolver\MatchPropertyTypeExpectedNameResolver; use Rector\Naming\PhpArray\ArrayFilter; use Rector\Naming\ValueObject\PropertyRename; use Rector\NodeNameResolver\NodeNameResolver; final class MatchPropertyTypeConflictingNameGuard { /** * @readonly * @var \Rector\Naming\ExpectedNameResolver\MatchPropertyTypeExpectedNameResolver */ private $matchPropertyTypeExpectedNameResolver; /** * @readonly * @var \Rector\NodeNameResolver\NodeNameResolver */ private $nodeNameResolver; /** * @readonly * @var \Rector\Naming\PhpArray\ArrayFilter */ private $arrayFilter; public function __construct(MatchPropertyTypeExpectedNameResolver $matchPropertyTypeExpectedNameResolver, NodeNameResolver $nodeNameResolver, ArrayFilter $arrayFilter) { $this->matchPropertyTypeExpectedNameResolver = $matchPropertyTypeExpectedNameResolver; $this->nodeNameResolver = $nodeNameResolver; $this->arrayFilter = $arrayFilter; } public function isConflicting(PropertyRename $propertyRename) : bool { $conflictingPropertyNames = $this->resolve($propertyRename->getClassLike()); return \in_array($propertyRename->getExpectedName(), $conflictingPropertyNames, \true); } /** * @return string[] */ private function resolve(ClassLike $classLike) : array { $expectedNames = []; foreach ($classLike->getProperties() as $property) { $expectedName = $this->matchPropertyTypeExpectedNameResolver->resolve($property, $classLike); if ($expectedName === null) { // fallback to existing name $expectedName = $this->nodeNameResolver->getName($property); } $expectedNames[] = $expectedName; } return $this->arrayFilter->filterWithAtLeastTwoOccurences($expectedNames); } }
[+]
..
[-] MatchPropertyTypeConflictingNameGuard.php
[edit]