/** * Create a parameter node. * * @param string $parameter_name * Parameter name, eg. $parm * @return ParameterNode */ public static function create($parameter_name) { $parameter_name = '$' . ltrim($parameter_name, '$'); $parameter_node = new ParameterNode(); $parameter_node->addChild(new VariableNode(T_VARIABLE, $parameter_name), 'name'); return $parameter_node; }
/** * Parse parameter. * @return ParameterNode */ private function parameter() { $node = new ParameterNode(); if ($type = $this->optionalTypeHint()) { $node->addChild($type, 'typeHint'); } $this->tryMatch('&', $node, 'reference'); $this->tryMatch(T_ELLIPSIS, $node, 'variadic'); $this->mustMatch(T_VARIABLE, $node, 'name', TRUE); if ($this->tryMatch('=', $node)) { $node->addChild($this->staticScalar(), 'value'); } return $node; }