/** * Remove if node is empty * * @see ConfigHelper::removeEmptyXpath() * @param array $names Node names list in sequence from XPath * @param ConfigInstance $node * @param ConfigInstance|null $parent * @return $this */ public function removeIfNodeEmpty($names, $node, $parent = null) { if ($node && $node->children()) { $parentParent = $parent; $parent = $node; /** @var ConfigInstance $node */ $node = $node->{current($names)}; if (!next($names)) { return $this; } $this->removeIfNodeEmpty($names, $node, $parent); if ($parentParent) { //try to remove original parent $this->removeIfNodeEmpty($names, $parent, $parentParent); } } elseif ($node && $parent && !$node->hasComment()) { unset($parent->{$node->getName()}); } return $this; }