rector/rules/Privatization/Reflection/ClassConstantsResolver.php
Tomas Votruba cdc3b7adef Updated Rector to commit f451b0b8e1e6761ec7f50809745d44d01caba66d
f451b0b8e1 [PHP 8.0] Bump to promoted properties (#4)
2021-05-10 23:39:21 +00:00

39 lines
1.3 KiB
PHP

<?php
declare (strict_types=1);
namespace Rector\Privatization\Reflection;
use PHPStan\Reflection\ReflectionProvider;
final class ClassConstantsResolver
{
/**
* @var array<string, array<string, string>>
*/
private $cachedConstantNamesToValues = [];
/**
* @var \PHPStan\Reflection\ReflectionProvider
*/
private $reflectionProvider;
public function __construct(\PHPStan\Reflection\ReflectionProvider $reflectionProvider)
{
$this->reflectionProvider = $reflectionProvider;
}
/**
* @return array<string, mixed>
*/
public function getClassConstantNamesToValues(string $classWithConstants) : array
{
if (isset($this->cachedConstantNamesToValues[$classWithConstants])) {
return $this->cachedConstantNamesToValues[$classWithConstants];
}
if (!$this->reflectionProvider->hasClass($classWithConstants)) {
return [];
}
$classReflection = $this->reflectionProvider->getClass($classWithConstants);
$reflectionClass = $classReflection->getNativeReflection();
$constantNamesToValues = $reflectionClass->getConstants();
$this->cachedConstantNamesToValues = $constantNamesToValues;
return $constantNamesToValues;
}
}