11 var $methods = array();
12 var $_visitFnCache = array();
14 function __construct(){
15 $this->_visitFnCache
= get_class_methods(get_class($this));
16 $this->_visitFnCache
= array_flip($this->_visitFnCache
);
19 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 function visitArray( $nodes ){
45 array_map( array($this,'visitObj'), $nodes);