示例#1
0
 public function testParamProducesCorrectDocBlockLine()
 {
     $this->tag->setParamName('foo');
     $this->tag->setDatatype('string');
     $this->tag->setDescription('bar bar bar');
     $this->assertEquals('@param string $foo bar bar bar', $this->tag->generate());
 }
示例#2
0
 public function testParamProducesCorrectDocBlockLine()
 {
     $this->tag->setVariableName('foo');
     $this->tag->setTypes('string|null');
     $this->tag->setDescription('description');
     $this->assertEquals('@param string|null $foo description', $this->tag->generate());
 }
示例#3
0
 public function generate()
 {
     $method = $this->getMethodGenerator();
     $api = $this->getApi();
     $operation = $this->getOperation();
     $method->setName($operation->getNickname());
     $parameterClassGenerator = $this->getParameterClassGenerator();
     $parameterClassGenerator->setName($operation->getNickname());
     $parameterGenerator = $this->getParameterGenerator();
     $propertyGenerator = $this->getPropertyGenerator();
     $docBlockGenerator = $this->getDocblockGenerator();
     $docBlockGenerator->setShortDescription($operation->getSummary());
     $docBlockGenerator->setLongDescription(strip_tags($operation->getNotes()));
     $hasRequired = false;
     $routeParams = array();
     foreach ($operation->getParameters() as $swaggerParameter) {
         switch ($swaggerParameter->getParamType()) {
             case self::PARAM_TYPE_PATH:
                 if ($swaggerParameter->getRequired()) {
                     $hasRequired = true;
                 }
                 $parameters = $method->getParameters();
                 if (isset($parameters[$swaggerParameter->getName()])) {
                     continue;
                 }
                 $parameter = clone $parameterGenerator;
                 $parameter->setName($swaggerParameter->getName());
                 $method->setParameter($parameter);
                 $paramTag = new CodeGenerator\DocBlock\Tag\ParamTag();
                 $paramTag->setDataType($swaggerParameter::getType($swaggerParameter->getDataType()));
                 $paramTag->setParamName($swaggerParameter->getName());
                 $paramDescription = $swaggerParameter->getDescription();
                 $paramTag->setDescription($paramDescription);
                 $docBlockGenerator->setTag($paramTag);
                 $routeParams[] = $parameter;
                 break;
             case self::PARAM_TYPE_QUERY:
             case self::PARAM_TYPE_FORM:
                 $propertyName = lcfirst($swaggerParameter->getName());
                 if (($postParamStart = strpos($propertyName, '[')) !== false) {
                     $propertyPostParams = substr($propertyName, $postParamStart);
                     $propertyName = substr($propertyName, 0, $postParamStart);
                     echo "{$method->getName()}::\${$propertyName} has: {$propertyPostParams}" . PHP_EOL;
                 }
                 if ($parameterClassGenerator->hasProperty($propertyName)) {
                     continue;
                 }
                 $property = clone $propertyGenerator;
                 $property->setName($propertyName);
                 $propertyDocblock = new CodeGenerator\DocBlockGenerator();
                 $propertyDocblock->setShortDescription($swaggerParameter->getDescription());
                 $propertyDescription = '';
                 if ($allowableValues = $swaggerParameter->getAllowableValues()) {
                     if ($allowableValues->getValueType() == 'LIST') {
                         $propertyDescription .= 'Allowable values: [' . implode(', ', $allowableValues->getValues()) . ']' . PHP_EOL;
                     }
                 }
                 $propertyDocblock->setLongDescription($propertyDescription);
                 if (!$this->isDocBlockEmpty($propertyDocblock)) {
                     $property->setDocBlock($propertyDocblock);
                 }
                 $parameterClassGenerator->addPropertyFromGenerator($property);
                 $getterGenerator = $this->generateParameterGetter($propertyName, $swaggerParameter);
                 $setterGenerator = $this->generateParameterSetter($propertyName, $swaggerParameter);
                 $parameterClassGenerator->addMethods(array($getterGenerator, $setterGenerator));
                 break;
         }
     }
     if (count($parameterClassGenerator->getProperties())) {
         $queryParameter = clone $parameterGenerator;
         $queryParameter->setName($operation->getNickname());
         $queryParameter->setType(RestGenerator::REQUEST_NAMESPACE_ALIAS . '\\' . $operation->getNickname());
         if (!$hasRequired) {
             $queryParameter->setDefaultValue(new CodeGenerator\ValueGenerator(null));
         }
         $paramTag = new CodeGenerator\DocBlock\Tag\ParamTag();
         $paramTag->setDataType(RestGenerator::REQUEST_NAMESPACE_ALIAS . '\\' . $operation->getNickname());
         $paramTag->setParamName($operation->getNickname());
         if (!$hasRequired) {
             $paramTag->setDescription(' = null');
         }
         $docBlockGenerator->setTag($paramTag);
         $method->setParameter($queryParameter);
     } else {
         $queryParameter = null;
     }
     $method->setDocBlock($docBlockGenerator);
     $body = $this->getBody($routeParams, $queryParameter);
     $method->setBody($body);
 }