/** * Accept a visitor. * * @param T_Visitor $visitor visitor object */ function accept(T_Visitor $visitor) { $name = explode('_', get_class($this)); $method = 'visit' . array_pop($name); $visitor->{$method}($this); if ($visitor->isTraverseChildren() && $this->isChildren()) { $visitor->preChildEvent(); foreach ($this->children as $child) { $child->accept($visitor); } $visitor->postChildEvent(); } }
/** * Accept a visitor. * * @param T_Visitor $visitor visitor object */ function accept(T_Visitor $visitor) { $name = explode('_', get_class($this)); // remove prefix (first in array), and concatenate others array_shift($name); $method = 'visit' . implode('', $name); $visitor->{$method}($this); if ($visitor->isTraverseChildren() && $this->isChildren()) { $visitor->preChildEvent(); foreach ($this->children as $child) { $child->accept($visitor); } $visitor->postChildEvent(); } }
/** * Accept a visitor. * * @param T_Visitor $visitor visitor object * @return T_Form_Group fluent interface */ function accept(T_Visitor $visitor) { $name = explode('_', get_class($this)); array_shift($name); $method = 'visit' . implode('', $name); $visitor->{$method}($this); if ($visitor->isTraverseChildren() && $this->isChildren()) { $visitor->preChildEvent(); if ($cur = current($this->steps)) { $cur->accept($visitor); } foreach ($this->children as $child) { $child->accept($visitor); } $visitor->postChildEvent(); } return $this; }