mirror of
				https://github.com/Icinga/icinga-php-thirdparty.git
				synced 2025-10-29 18:23:53 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			45 lines
		
	
	
		
			829 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			829 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * @private
 | |
|  */
 | |
| class Less_Visitor {
 | |
| 
 | |
| 	protected $methods = [];
 | |
| 	protected $_visitFnCache = [];
 | |
| 
 | |
| 	public function __construct() {
 | |
| 		$this->_visitFnCache = get_class_methods( get_class( $this ) );
 | |
| 		$this->_visitFnCache = array_flip( $this->_visitFnCache );
 | |
| 	}
 | |
| 
 | |
| 	public function visitObj( $node ) {
 | |
| 		$funcName = 'visit' . $node->type;
 | |
| 		if ( isset( $this->_visitFnCache[$funcName] ) ) {
 | |
| 
 | |
| 			$visitDeeper = true;
 | |
| 			$this->$funcName( $node, $visitDeeper );
 | |
| 
 | |
| 			if ( $visitDeeper ) {
 | |
| 				$node->accept( $this );
 | |
| 			}
 | |
| 
 | |
| 			$funcName .= "Out";
 | |
| 			if ( isset( $this->_visitFnCache[$funcName] ) ) {
 | |
| 				$this->$funcName( $node );
 | |
| 			}
 | |
| 
 | |
| 		} else {
 | |
| 			$node->accept( $this );
 | |
| 		}
 | |
| 
 | |
| 		return $node;
 | |
| 	}
 | |
| 
 | |
| 	public function visitArray( $nodes ) {
 | |
| 		foreach ( $nodes as $node ) {
 | |
| 			$this->visitObj( $node );
 | |
| 		}
 | |
| 		return $nodes;
 | |
| 	}
 | |
| }
 |