rector/packages/PhpAttribute/AnnotationToAttributeMapper/ClassConstFetchAnnotationToAttributeMapper.php
Tomas Votruba 361d8f4a2f Updated Rector to commit f374b9faa834b5cceef16d99dd46e147ce753312
f374b9faa8 [PHP 8.0] Include keys in annotation to attribute transformation (#1766)
2022-02-05 10:39:52 +00:00

33 lines
925 B
PHP

<?php
declare (strict_types=1);
namespace Rector\PhpAttribute\AnnotationToAttributeMapper;
use PhpParser\Node\Expr\ClassConstFetch;
use PhpParser\Node\Name;
use Rector\PhpAttribute\Contract\AnnotationToAttributeMapperInterface;
/**
* @implements AnnotationToAttributeMapperInterface<string>
*/
final class ClassConstFetchAnnotationToAttributeMapper implements \Rector\PhpAttribute\Contract\AnnotationToAttributeMapperInterface
{
/**
* @param mixed $value
*/
public function isCandidate($value) : bool
{
if (!\is_string($value)) {
return \false;
}
return \strpos($value, '::') !== \false;
}
/**
* @param string $value
*/
public function map($value) : \PhpParser\Node\Expr
{
[$class, $constant] = \explode('::', $value);
return new \PhpParser\Node\Expr\ClassConstFetch(new \PhpParser\Node\Name($class), $constant);
}
}