[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: NameImporter.php
File is not writable. Editing disabled.
<?php declare (strict_types=1); namespace Rector\CodingStyle\Node; use PhpParser\Node\Identifier; use PhpParser\Node\Name; use PhpParser\Node\Name\FullyQualified; use PhpParser\Node\Stmt\GroupUse; use PhpParser\Node\Stmt\Use_; use Rector\CodingStyle\ClassNameImport\ClassNameImportSkipper; use Rector\Naming\Naming\AliasNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\PostRector\Collector\UseNodesToAddCollector; use Rector\StaticTypeMapper\PhpParser\FullyQualifiedNodeMapper; use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; use Rector\ValueObject\Application\File; final class NameImporter { /** * @readonly * @var \Rector\CodingStyle\ClassNameImport\ClassNameImportSkipper */ private $classNameImportSkipper; /** * @readonly * @var \Rector\StaticTypeMapper\PhpParser\FullyQualifiedNodeMapper */ private $fullyQualifiedNodeMapper; /** * @readonly * @var \Rector\PostRector\Collector\UseNodesToAddCollector */ private $useNodesToAddCollector; /** * @readonly * @var \Rector\Naming\Naming\AliasNameResolver */ private $aliasNameResolver; public function __construct(ClassNameImportSkipper $classNameImportSkipper, FullyQualifiedNodeMapper $fullyQualifiedNodeMapper, UseNodesToAddCollector $useNodesToAddCollector, AliasNameResolver $aliasNameResolver) { $this->classNameImportSkipper = $classNameImportSkipper; $this->fullyQualifiedNodeMapper = $fullyQualifiedNodeMapper; $this->useNodesToAddCollector = $useNodesToAddCollector; $this->aliasNameResolver = $aliasNameResolver; } /** * @param array<Use_|GroupUse> $currentUses */ public function importName(FullyQualified $fullyQualified, File $file, array $currentUses) : ?Name { if ($this->classNameImportSkipper->shouldSkipName($fullyQualified, $currentUses)) { return null; } $staticType = $this->fullyQualifiedNodeMapper->mapToPHPStan($fullyQualified); if (!$staticType instanceof FullyQualifiedObjectType) { return null; } return $this->importNameAndCollectNewUseStatement($file, $fullyQualified, $staticType, $currentUses); } /** * @param array<Use_|GroupUse> $currentUses */ private function resolveNameInUse(FullyQualified $fullyQualified, array $currentUses) : ?Name { $aliasName = $this->aliasNameResolver->resolveByName($fullyQualified, $currentUses); if (\is_string($aliasName)) { return new Name($aliasName); } if (\substr_count($fullyQualified->toCodeString(), '\\') === 1) { return null; } $lastName = $fullyQualified->getLast(); foreach ($currentUses as $currentUse) { foreach ($currentUse->uses as $useUse) { if ($useUse->name->getLast() !== $lastName) { continue; } if ($useUse->alias instanceof Identifier && $useUse->alias->toString() !== $lastName) { return new Name($lastName); } } } return null; } /** * @param array<Use_|GroupUse> $currentUses */ private function importNameAndCollectNewUseStatement(File $file, FullyQualified $fullyQualified, FullyQualifiedObjectType $fullyQualifiedObjectType, array $currentUses) : ?Name { // make use of existing use import $nameInUse = $this->resolveNameInUse($fullyQualified, $currentUses); if ($nameInUse instanceof Name) { $nameInUse->setAttribute(AttributeKey::NAMESPACED_NAME, $fullyQualified->toString()); return $nameInUse; } // the same end is already imported → skip if ($this->classNameImportSkipper->shouldSkipNameForFullyQualifiedObjectType($file, $fullyQualified, $fullyQualifiedObjectType)) { return null; } if ($this->useNodesToAddCollector->isShortImported($file, $fullyQualifiedObjectType)) { if ($this->useNodesToAddCollector->isImportShortable($file, $fullyQualifiedObjectType)) { return $fullyQualifiedObjectType->getShortNameNode(); } return null; } $this->addUseImport($file, $fullyQualified, $fullyQualifiedObjectType); return $fullyQualifiedObjectType->getShortNameNode(); } private function addUseImport(File $file, FullyQualified $fullyQualified, FullyQualifiedObjectType $fullyQualifiedObjectType) : void { if ($this->useNodesToAddCollector->hasImport($file, $fullyQualified, $fullyQualifiedObjectType)) { return; } if ($fullyQualified->getAttribute(AttributeKey::IS_FUNCCALL_NAME) === \true) { $this->useNodesToAddCollector->addFunctionUseImport($fullyQualifiedObjectType); } elseif ($fullyQualified->getAttribute(AttributeKey::IS_CONSTFETCH_NAME) === \true) { $this->useNodesToAddCollector->addConstantUseImport($fullyQualifiedObjectType); } else { $this->useNodesToAddCollector->addUseImport($fullyQualifiedObjectType); } } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: premium264.web-hosting.com
Server IP: 69.57.162.13
PHP Version: 8.1.34
Server Software: LiteSpeed
System: Linux premium264.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64
HDD Total: 97.87 GB
HDD Free: 73.56 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
No
pkexec:
No
git:
Yes
User Info
Username: kidscntx
User ID (UID): 1154
Group ID (GID): 1112
Script Owner UID: 1154
Current Dir Owner: N/A