Esempio n. 1
0
 /**
  * Parses method nodes
  *
  * @param ClassBuilder $classBuilder ClassBuilder object
  * @param NodeStream   $stream       NodeStream object
  */
 protected function parseMethod(ClassBuilder $classBuilder, NodeStream $stream)
 {
     $builder = new MethodBuilder();
     $comments = array();
     $methodNodes = array(TokenParser::NODE_PUBLIC_METHOD => 'public', TokenParser::NODE_PROTECTED_METHOD => 'protected', TokenParser::NODE_PRIVATE_METHOD => 'private');
     $node = $stream->expect(array_keys($methodNodes));
     $builder->setName($node->getValue());
     $builder->setVisibility($methodNodes[$node->getType()]);
     while ($stream->is(TokenParser::NODE_ARGUMENT)) {
         $argument = array();
         $argument[] = $stream->current()->getValue();
         $stream->next();
         if ($stream->is(TokenParser::NODE_ARGUMENT_TYPE)) {
             $argument[] = $stream->current()->getValue();
             $stream->next();
         } else {
             $argument[] = 'mixed';
         }
         $builder->addArgument($argument);
     }
     if ($stream->is(TokenParser::NODE_RETURN_TYPE)) {
         $builder->setType($stream->current()->getValue());
         $stream->next();
     }
     while ($stream->is(TokenParser::NODE_METHOD_COMMENT)) {
         $comments[] = $stream->current()->getValue();
         $stream->next();
     }
     if (count($comments) > 0) {
         $builder->setComments($comments);
     }
     $classBuilder->addMethod($builder);
 }