src/Parser.php
protected function _functionNode()
    {
        $node = new FunctionDef();
        $token = $this->_stream->current(true);
        $parent = $this->_states['current'];

        $body = $token[1];
        $name = substr($this->_stream->next('('), 0, -1);
        $body .= $name;
        $node->name = trim($name);
        $args = $this->_parseArgs();
        $node->args = $args['args'];
        $body .= $args['body'] . $this->_stream->next([';', '{']);
        if ($parent) {
            $isMethod = $parent->hasMethods;
            if ($parent->type === 'interface') {
                $node->type = 'signature';
            }
        } else {
            $isMethod = false;
        }
        $node->isMethod = $isMethod;
        $node->isClosure = !$node->name;
        if ($isMethod) {
            $node->visibility = $this->_states['visibility'];
            $this->_states['visibility'] = [];
        }
        $node->body = $body;
        $this->_codeNode();
        $this->_states['body'] = $body;
        $this->_contextualize($node);

        // Looking for curly brackets only if not an "abstract function"
        if ($this->_stream->current() === '{') {
            $this->_states['current'] = $node;
        }

        return $node->function = $node;
    }
protected function _functionNode()
    {
        $node = new FunctionDef();
        $token = $this->_stream->current(true);
        $parent = $this->_states['current'];

        $body = $token[1];
        $name = substr($this->_stream->next('('), 0, -1);
        $body .= $name;
        $node->name = trim($name);
        $args = $this->_parseArgs();
        $node->args = $args['args'];
        $body .= $args['body'] . $this->_stream->next([';', '{']);
        if ($parent) {
            $isMethod = $parent->hasMethods;
            if ($parent->type === 'interface') {
                $node->type = 'signature';
            }
        } else {
            $isMethod = false;
        }
        $node->isMethod = $isMethod;
        $node->isClosure = !$node->name;
        if ($isMethod) {
            $node->visibility = $this->_states['visibility'];
            $this->_states['visibility'] = [];
        }
        $node->body = $body;
        $this->_codeNode();
        $this->_states['body'] = $body;
        $this->_contextualize($node);

        // Looking for curly brackets only if not an "abstract function"
        if ($this->_stream->current() === '{') {
            $this->_states['current'] = $node;
        }

        return $node->function = $node;
    }
protected function _functionNode ( ) { $ node = new FunctionDef ( ) ; $ token = $ this -> _stream -> current ( true ) ; $ parent = $ this -> _states [ 'current' ] ; $ body = $ token [ 1 ] ; $ name = substr ( $ this -> _stream -> next ( '(' ) , 0 , - 1 ) ; $ body .= $ name ; $ node -> name = trim ( $ name ) ; $ args = $ this -> _parseArgs ( ) ; $ node -> args = $ args [ 'args' ] ; $ body .= $ args [ 'body' ] . $ this -> _stream -> next ( [ ';' , '{' ] ) ; if ( $ parent ) { $ isMethod = $ parent -> hasMethods ; if ( $ parent -> type === 'interface' ) { $ node -> type = 'signature' ; } } else { $ isMethod = false ; } $ node -> isMethod = $ isMethod ; $ node -> isClosure = ! $ node -> name ; if ( $ isMethod ) { $ node -> visibility = $ this -> _states [ 'visibility' ] ; $ this -> _states [ 'visibility' ] = [ ] ; } $ node -> body = $ body ; $ this -> _codeNode ( ) ; $ this -> _states [ 'body' ] = $ body ; $ this -> _contextualize ( $ node ) ; // Looking for curly brackets only if not an "abstract function" if ( $ this -> _stream -> current ( ) === '{' ) { $ this -> _states [ 'current' ] = $ node ; } return $ node -> function = $ node ; }
Build a function node.
Build a function node .