コード例 #1
0
 public function store_function(Node\Stmt\Function_ $function)
 {
     $parameters = array_map(function ($param) {
         return array('name' => $param->name, 'default' => !empty($param->default), 'type' => ltrim((string) $param->type, '\\'));
     }, $function->getParams());
     $description = '';
     $return_types = array();
     if ($comments = $function->getAttribute('comments')) {
         $phpdoc = new DocBlock($comments[0]->getText());
         $description = $phpdoc->getShortDescription();
         if ($return = $phpdoc->getTagsByName('return')) {
             $return_types = array_map('ltrim', explode('|', $return[0]->getType()), array('\\'));
         }
         // short circuit @ignore functions
         if ($phpdoc->hasTag('ignore')) {
             return;
         }
     }
     $this->store_model('functions', array('function' => $function->name, 'namespace' => !empty($function->namespacedName) ? implode('\\', array_slice($function->namespacedName->parts, 0, -1)) : '', 'file' => $this->_current_file, 'line' => $function->getLine(), 'description' => $description, 'return_types' => json_encode($return_types), 'parameters' => json_encode($parameters)));
 }
コード例 #2
0
 /**
  * Get the line number that this function ends on.
  *
  * @return int
  */
 public function getEndLine()
 {
     return (int) $this->node->getAttribute('endLine', -1);
 }
コード例 #3
0
 function getDocBlockReturnType()
 {
     return $this->function->getAttribute('namespacedReturn');
 }
コード例 #4
0
 public function addFunction(FunctionNode $node)
 {
     $function = new ReflectionFunction((string) $node->namespacedName);
     $function->setFilename((string) $this->context->getFilePath());
     $function->setStartLine((int) $node->getAttribute('startLine'));
     $function->setEndLine((int) $node->getAttribute('endLine'));
     $function->setAliases($this->context->getAliases());
     $function->setDocComment((string) $node->getDocComment());
     $this->addFunctionLikeParameters($function, $node->params);
     $this->context->enterReflection($function);
     $this->context->enterFunctionLike($function);
     return $function;
 }