setParent($parent); return; } /** * Set parent clause. * * @param \Hoa\Praspel\Model\Clause $parent Parent. * @return \Hoa\Praspel\Model\Clause */ protected function setParent(Clause $parent) { $old = $this->_parent; $this->_parent = $parent; return $old; } /** * Get parent clause. * * @return \Hoa\Praspel\Model\Clause */ public function getParent() { return $this->_parent; } /** * Get the root clause. * * @return \Hoa\Praspel\Model\Clause */ public function getRoot() { $parent = $this; while (null !== $nextParent = $parent->getParent()) { $parent = $nextParent; } return $parent; } /** * Get clause name. * * @return string */ public function getName() { return static::NAME; } /** * Get identifier. * * @return string */ public function getId() { $out = null; $parent = $this->getParent(); if (null !== $parent && !($parent instanceof Specification)) { $out .= $this->getParent()->getId() . '_'; } return $out . $this->_getId(); } /** * Get identifier (fallback). * * @return string */ protected function _getId() { return $this->getName(); } /** * Accept a visitor. * * @param \Hoa\Visitor\Visit $visitor Visitor. * @param mixed &$handle Handle (reference). * @param mixed $eldnah Handle (no reference). * @return mixed */ public function accept( Visitor\Visit $visitor, &$handle = null, $eldnah = null ) { return $visitor->visit($this, $handle, $eldnah); } }