Chris@13: false : Whether the closure is static Chris@0: * 'byRef' => false : Whether to return by reference Chris@0: * 'params' => array(): Parameters Chris@0: * 'uses' => array(): use()s Chris@0: * 'returnType' => null : Return type Chris@0: * 'stmts' => array(): Statements Chris@0: * @param array $attributes Additional attributes Chris@0: */ Chris@13: public function __construct(array $subNodes = [], array $attributes = []) { Chris@0: parent::__construct($attributes); Chris@13: $this->static = $subNodes['static'] ?? false; Chris@13: $this->byRef = $subNodes['byRef'] ?? false; Chris@13: $this->params = $subNodes['params'] ?? []; Chris@13: $this->uses = $subNodes['uses'] ?? []; Chris@13: $returnType = $subNodes['returnType'] ?? null; Chris@13: $this->returnType = \is_string($returnType) ? new Node\Identifier($returnType) : $returnType; Chris@13: $this->stmts = $subNodes['stmts'] ?? []; Chris@0: } Chris@0: Chris@13: public function getSubNodeNames() : array { Chris@13: return ['static', 'byRef', 'params', 'uses', 'returnType', 'stmts']; Chris@0: } Chris@0: Chris@13: public function returnsByRef() : bool { Chris@0: return $this->byRef; Chris@0: } Chris@0: Chris@13: public function getParams() : array { Chris@0: return $this->params; Chris@0: } Chris@0: Chris@0: public function getReturnType() { Chris@0: return $this->returnType; Chris@0: } Chris@0: Chris@13: /** @return Node\Stmt[] */ Chris@13: public function getStmts() : array { Chris@0: return $this->stmts; Chris@0: } Chris@13: Chris@13: public function getType() : string { Chris@13: return 'Expr_Closure'; Chris@13: } Chris@0: }