/** * A quick way to add a parameter with description which is created from the given parameters * * @param string $name * @param null|string $type * @param null|string $typeDescription * @param mixed $defaultValue omit the argument to define no default value * * @return $this */ public function addSimpleDescParameter($name, $type = null, $typeDescription = null, $defaultValue = null) { $parameter = new PhpParameter($name); $parameter->setType($type); $parameter->setTypeDescription($typeDescription); if (3 < func_num_args() == 3) { $parameter->setDefaultValue($defaultValue); } $this->addParameter($parameter); return $this; }
protected function visitMethod(ClassMethod $node) { $m = new PhpMethod($node->name); $m->setAbstract($node->isAbstract()); $m->setFinal($node->isFinal()); $m->setVisibility($this->getVisibility($node)); $m->setStatic($node->isStatic()); $m->setReferenceReturned($node->returnsByRef()); // docblock if (($doc = $node->getDocComment()) !== null) { $m->setDocblock($doc->getReformattedText()); $docblock = $m->getDocblock(); $m->setDescription($docblock->getShortDescription()); $m->setLongDescription($docblock->getLongDescription()); } // params $params = $m->getDocblock()->getTags('param'); foreach ($node->params as $param) { /* @var $param Param */ $p = new PhpParameter(); $p->setName($param->name); $p->setPassedByReference($param->byRef); if (is_string($param->type)) { $p->setType($param->type); } else { if ($param->type instanceof Name) { $p->setType(implode('\\', $param->type->parts)); } } $default = $param->default; if ($default !== null) { $p->setDefaultValue($this->getValue($default)); } $tag = $params->find($p, function (ParamTag $t, $p) { return $t->getVariable() == '$' . $p->getName(); }); if ($tag !== null) { $p->setType($tag->getType(), $tag->getDescription()); } $m->addParameter($p); } // return type and description $returns = $m->getDocblock()->getTags('return'); if ($returns->size() > 0) { $return = $returns->get(0); $m->setType($return->getType(), $return->getDescription()); } // body $stmts = $node->getStmts(); if (is_array($stmts) && count($stmts)) { $prettyPrinter = new Standard(); $m->setBody($prettyPrinter->prettyPrint($stmts)); } $this->struct->setMethod($m); }