opt
/
cpanel
/
ea-wappspector
/
vendor
/
rector
/
rector
/
rules
/
Removing
/
NodeManipulator
➕ New
📤 Upload
✎ Editing:
ComplexNodeRemover.php
← Back
<?php declare (strict_types=1); namespace Rector\Removing\NodeManipulator; use PhpParser\Node\Stmt\ClassMethod; use PHPStan\PhpDocParser\Ast\PhpDoc\ParamTagValueNode; use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory; use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover; use Rector\Comments\NodeDocBlock\DocBlockUpdater; use Rector\NodeNameResolver\NodeNameResolver; final class ComplexNodeRemover { /** * @readonly * @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory */ private $phpDocInfoFactory; /** * @readonly * @var \Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTagRemover */ private $phpDocTagRemover; /** * @readonly * @var \Rector\NodeNameResolver\NodeNameResolver */ private $nodeNameResolver; /** * @readonly * @var \Rector\Comments\NodeDocBlock\DocBlockUpdater */ private $docBlockUpdater; public function __construct(PhpDocInfoFactory $phpDocInfoFactory, PhpDocTagRemover $phpDocTagRemover, NodeNameResolver $nodeNameResolver, DocBlockUpdater $docBlockUpdater) { $this->phpDocInfoFactory = $phpDocInfoFactory; $this->phpDocTagRemover = $phpDocTagRemover; $this->nodeNameResolver = $nodeNameResolver; $this->docBlockUpdater = $docBlockUpdater; } /** * @param int[] $paramKeysToBeRemoved * @return int[] */ public function processRemoveParamWithKeys(ClassMethod $classMethod, array $paramKeysToBeRemoved) : array { $totalKeys = \count($classMethod->params) - 1; $removedParamKeys = []; $phpdocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($classMethod); foreach ($paramKeysToBeRemoved as $paramKeyToBeRemoved) { $startNextKey = $paramKeyToBeRemoved + 1; for ($nextKey = $startNextKey; $nextKey <= $totalKeys; ++$nextKey) { if (!isset($classMethod->params[$nextKey])) { // no next param, break the inner loop, remove the param break; } if (\in_array($nextKey, $paramKeysToBeRemoved, \true)) { // keep searching next key not in $paramKeysToBeRemoved continue; } return []; } $paramName = (string) $this->nodeNameResolver->getName($classMethod->params[$paramKeyToBeRemoved]); unset($classMethod->params[$paramKeyToBeRemoved]); $paramTagValueByName = $phpdocInfo->getParamTagValueByName($paramName); if ($paramTagValueByName instanceof ParamTagValueNode) { $this->phpDocTagRemover->removeTagValueFromNode($phpdocInfo, $paramTagValueByName); $this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($classMethod); } $removedParamKeys[] = $paramKeyToBeRemoved; } return $removedParamKeys; } }
💾 Save Changes
Cancel
📤 Upload File
×
Select File
Upload
Cancel
➕ Create New
×
Type
📄 File
📁 Folder
Name
Create
Cancel
✎ Rename Item
×
Current Name
New Name
Rename
Cancel
🔐 Change Permissions
×
Target File
Permission (e.g., 0755, 0644)
0755
0644
0777
Apply
Cancel