rector/packages/FamilyTree/Reflection/FamilyRelationsAnalyzer.php
Tomas Votruba 57002777fc Updated Rector to commit 1a87a3dfcc2caaaa74b05b4318035ba2c697c559
1a87a3dfcc [TypeDeclaration] Prevent checking class like has external fully qualifieds when class like is null (#319)
2021-06-28 09:39:23 +00:00

41 lines
1.4 KiB
PHP

<?php
declare (strict_types=1);
namespace Rector\FamilyTree\Reflection;
use PHPStan\Reflection\ClassReflection;
use PHPStan\Reflection\ReflectionProvider;
use RectorPrefix20210628\Symplify\PackageBuilder\Reflection\PrivatesAccessor;
final class FamilyRelationsAnalyzer
{
/**
* @var \PHPStan\Reflection\ReflectionProvider
*/
private $reflectionProvider;
/**
* @var \Symplify\PackageBuilder\Reflection\PrivatesAccessor
*/
private $privatesAccessor;
public function __construct(\PHPStan\Reflection\ReflectionProvider $reflectionProvider, \RectorPrefix20210628\Symplify\PackageBuilder\Reflection\PrivatesAccessor $privatesAccessor)
{
$this->reflectionProvider = $reflectionProvider;
$this->privatesAccessor = $privatesAccessor;
}
/**
* @return ClassReflection[]
*/
public function getChildrenOfClassReflection(\PHPStan\Reflection\ClassReflection $desiredClassReflection) : array
{
/** @var ClassReflection[] $classReflections */
$classReflections = $this->privatesAccessor->getPrivateProperty($this->reflectionProvider, 'classes');
$childrenClassReflections = [];
foreach ($classReflections as $classReflection) {
if (!$classReflection->isSubclassOf($desiredClassReflection->getName())) {
continue;
}
$childrenClassReflections[] = $classReflection;
}
return $childrenClassReflections;
}
}