Exemple #1
0
 /**
  * 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();
     }
 }
Exemple #2
0
 /**
  * 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();
     }
 }
Exemple #3
0
 /**
  * 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;
 }