children = new ArrayObject(); $this->parentNode = null; } // Returns compiled block public function compile($tpl) { $res = ''; foreach ($this->children as $child) { $res .= $child->compile($tpl); } return $res; } # Add a children to current node public function addChild($child) { $this->children[] = $child; $child->setParent($this); } # Set current node children public function setChildren($children) { $this->children = $children; foreach ($this->children as $child) { $child->setParent($this); } } # Defines parent for current node protected function setParent($parent) { $this->parentNode = $parent; } # Retrieves current node parent. # If parent is root node, null is returned public function getParent() { return $this->parentNode; } # Current node tag public function getTag() { return "ROOT"; } }