66 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			66 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|   | <?php | ||
|  | 
 | ||
|  | namespace PhpParser\Node\Expr; | ||
|  | 
 | ||
|  | use PhpParser\Node; | ||
|  | use PhpParser\Node\Expr; | ||
|  | use PhpParser\Node\FunctionLike; | ||
|  | 
 | ||
|  | class Closure extends Expr implements FunctionLike | ||
|  | { | ||
|  |     /** @var bool Whether the closure is static */ | ||
|  |     public $static; | ||
|  |     /** @var bool Whether to return by reference */ | ||
|  |     public $byRef; | ||
|  |     /** @var Node\Param[] Parameters */ | ||
|  |     public $params; | ||
|  |     /** @var ClosureUse[] use()s */ | ||
|  |     public $uses; | ||
|  |     /** @var null|string|Node\Name Return type */ | ||
|  |     public $returnType; | ||
|  |     /** @var Node[] Statements */ | ||
|  |     public $stmts; | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Constructs a lambda function node. | ||
|  |      * | ||
|  |      * @param array $subNodes   Array of the following optional subnodes: | ||
|  |      *                          'static'     => false  : Whether the closure is static | ||
|  |      *                          'byRef'      => false  : Whether to return by reference | ||
|  |      *                          'params'     => array(): Parameters | ||
|  |      *                          'uses'       => array(): use()s | ||
|  |      *                          'returnType' => null   : Return type | ||
|  |      *                          'stmts'      => array(): Statements | ||
|  |      * @param array $attributes Additional attributes | ||
|  |      */ | ||
|  |     public function __construct(array $subNodes = array(), array $attributes = array()) { | ||
|  |         parent::__construct(null, $attributes); | ||
|  |         $this->static = isset($subNodes['static']) ? $subNodes['static'] : false; | ||
|  |         $this->byRef = isset($subNodes['byRef']) ? $subNodes['byRef'] : false; | ||
|  |         $this->params = isset($subNodes['params']) ? $subNodes['params'] : array(); | ||
|  |         $this->uses = isset($subNodes['uses']) ? $subNodes['uses'] : array(); | ||
|  |         $this->returnType = isset($subNodes['returnType']) ? $subNodes['returnType'] : null; | ||
|  |         $this->stmts = isset($subNodes['stmts']) ? $subNodes['stmts'] : array(); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function getSubNodeNames() { | ||
|  |         return array('static', 'byRef', 'params', 'uses', 'returnType', 'stmts'); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function returnsByRef() { | ||
|  |         return $this->byRef; | ||
|  |     } | ||
|  | 
 | ||
|  |     public function getParams() { | ||
|  |         return $this->params; | ||
|  |     } | ||
|  | 
 | ||
|  |     public function getReturnType() { | ||
|  |         return $this->returnType; | ||
|  |     } | ||
|  | 
 | ||
|  |     public function getStmts() { | ||
|  |         return $this->stmts; | ||
|  |     } | ||
|  | } |