%PDF- %PDF-
Direktori : /home/vacivi36/vacivitta.com.br/vendor/rector/rector/src/NodeAnalyzer/ |
Current File : /home/vacivi36/vacivitta.com.br/vendor/rector/rector/src/NodeAnalyzer/ClassAnalyzer.php |
<?php declare (strict_types=1); namespace Rector\Core\NodeAnalyzer; use PhpParser\Node; use PhpParser\Node\Expr\New_; use PhpParser\Node\Stmt\Class_; use Rector\Core\Util\StringUtils; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; final class ClassAnalyzer { /** * @var string * @see https://regex101.com/r/FQH6RT/1 */ private const ANONYMOUS_CLASS_REGEX = '#AnonymousClass\\w+$#'; /** * @readonly * @var \Rector\NodeNameResolver\NodeNameResolver */ private $nodeNameResolver; public function __construct(\Rector\NodeNameResolver\NodeNameResolver $nodeNameResolver) { $this->nodeNameResolver = $nodeNameResolver; } public function isAnonymousClass(\PhpParser\Node $node) : bool { if (!$node instanceof \PhpParser\Node\Stmt\Class_) { return \false; } $parent = $node->getAttribute(\Rector\NodeTypeResolver\Node\AttributeKey::PARENT_NODE); if (!$parent instanceof \PhpParser\Node\Expr\New_) { return \false; } if ($node->isAnonymous()) { return \true; } $className = $this->nodeNameResolver->getName($node); if ($className === null) { return \true; } // match PHPStan pattern for anonymous classes return \Rector\Core\Util\StringUtils::isMatch($className, self::ANONYMOUS_CLASS_REGEX); } }