> */ public function getNodeTypes() : array { return [Unset_::class, Assign::class, Expression::class]; } /** * @param Unset_|Assign|Expression $node * @return int|null|\PhpParser\Node */ public function refactor(Node $node) { if ($node instanceof Assign) { return $this->refactorAssign($node); } if ($node instanceof Expression) { if (!$node->expr instanceof Unset_) { return null; } return NodeTraverser::REMOVE_NODE; } return $this->nodeFactory->createNull(); } private function refactorAssign(Assign $assign) : ?FuncCall { if (!$assign->expr instanceof Unset_) { return null; } $unset = $assign->expr; if (!$this->nodeComparator->areNodesEqual($assign->var, $unset->expr)) { return null; } return $this->nodeFactory->createFuncCall('unset', [$assign->var]); } }