. */ declare(strict_types=1); namespace App\Helpers\Trees; use ArrayIterator; use RecursiveIterator; final class TreeViewNodeIterator extends ArrayIterator implements RecursiveIterator { /** * @param TreeViewNode[] $nodes */ public function __construct($nodes) { parent::__construct($nodes); } public function hasChildren(): bool { /** @var TreeViewNode $element */ $element = $this->current(); return $element->getNodes() !== null && $element->getNodes() !== []; } public function getChildren(): TreeViewNodeIterator { /** @var TreeViewNode $element */ $element = $this->current(); return new self($element->getNodes()); } }