11 protected $methods = array();
12 protected $_visitFnCache = array();
14 public function __construct(){
15 $this->_visitFnCache = get_class_methods(get_class($this));
16 $this->_visitFnCache = array_flip($this->_visitFnCache);
19 public function visitObj( $node ){
21 $funcName = 'visit'.$node->type;
22 if( isset($this->_visitFnCache[$funcName]) ){
25 $this->$funcName( $node, $visitDeeper );
31 $funcName = $funcName . "Out";
32 if( isset($this->_visitFnCache[$funcName]) ){
33 $this->$funcName( $node );
43 public function visitArray( $nodes ){
45 array_map( array($this,'visitObj'), $nodes);