$stmt) { if (!$stmt instanceof \PhpParser\Node\Stmt\Use_) { continue; } $this->removeUseFromUse($removedShortUses, $stmt); // nothing left → remove if ($stmt->uses === []) { unset($stmts[$stmtKey]); } } return $stmts; } /** * @param string[] $removedShortUses */ public function removeImportsFromNamespace(\PhpParser\Node\Stmt\Namespace_ $namespace, array $removedShortUses) : void { foreach ($namespace->stmts as $namespaceKey => $stmt) { if (!$stmt instanceof \PhpParser\Node\Stmt\Use_) { continue; } $this->removeUseFromUse($removedShortUses, $stmt); // nothing left → remove if ($stmt->uses === []) { unset($namespace->stmts[$namespaceKey]); } } } /** * @param string[] $removedShortUses */ private function removeUseFromUse(array $removedShortUses, \PhpParser\Node\Stmt\Use_ $use) : void { foreach ($use->uses as $usesKey => $useUse) { foreach ($removedShortUses as $removedShortUse) { if ($useUse->name->getLast() === $removedShortUse) { unset($use->uses[$usesKey]); } if ($useUse->name->toString() === $removedShortUse) { unset($use->uses[$usesKey]); } } } } }