rector/packages/PhpAttribute/AnnotationToAttributeMapper/ClassConstFetchAnnotationToAttributeMapper.php
Tomas Votruba 4bec1773e3 Updated Rector to commit 62e4c20b21a5d9e11848bd745227038be4349749
62e4c20b21 Add AnnotationToAttributeMapper collector for easier mapping manipulation (#1280)
2021-11-20 15:31:12 +00:00

33 lines
941 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\ClassConstFetch
{
[$class, $constant] = \explode('::', $value);
return new \PhpParser\Node\Expr\ClassConstFetch(new \PhpParser\Node\Name($class), $constant);
}
}