valueResolver = $valueResolver; $this->nodeFactory = $nodeFactory; $this->classConstantsResolver = $classConstantsResolver; } /** * @param class-string $classWithConstants */ public function create(\PhpParser\Node\Expr $expr, string $classWithConstants) : ?\PhpParser\Node\Expr\ClassConstFetch { $value = $this->valueResolver->getValue($expr); if ($value === null) { return null; } $constantNamesToValues = $this->classConstantsResolver->getClassConstantNamesToValues($classWithConstants); foreach ($constantNamesToValues as $constantName => $constantValue) { if ($constantValue !== $value) { continue; } return $this->nodeFactory->createClassConstFetch($classWithConstants, $constantName); } return null; } }