Beispiel #1
0
 public function testParamProducesCorrectDocBlockTag()
 {
     $this->tag->setName('foo');
     $this->tag->setDescription('bar bar bar');
     $this->assertEquals('@foo bar bar bar', $this->tag->generate());
 }
 public function testDescriptionGetterAndSetterPersistValue()
 {
     $this->_tag->setDescription('Foo foo foo');
     $this->assertEquals('Foo foo foo', $this->_tag->getDescription());
 }
 private function getServiceCode()
 {
     $code = new ClassGenerator($this->service->getName(), $this->namespace, null, '\\SoapClient');
     $doc = $this->service->getDoc();
     if ($doc) {
         $docBlock = new DocBlockGenerator($doc);
         $code->setDocBlock($docBlock);
     }
     foreach ($this->service->getFunctions() as $function) {
         $method = new MethodGenerator($function->getMethod());
         $docBlock = new DocBlockGenerator($function->getDoc());
         foreach ($function->getParams() as $param) {
             $methodParam = new ParameterGenerator($param->getName());
             if (false === $param->isPrimitive()) {
                 $methodParam->setType('\\' . $this->getFullNamespace($param->getType()));
             }
             $method->setParameter($methodParam);
             $tag = new Tag();
             $tag->setName('property');
             $type = $param->getType();
             if (false === $param->isPrimitive()) {
                 $type = '\\' . $this->getFullNamespace($param->getType());
             }
             $tag->setDescription(sprintf('%s $%s', $type, $param->getName()));
             $docBlock->setTag($tag);
         }
         $tag = new Tag();
         $tag->setName('returns');
         $tag->setDescription("\\" . $this->getFullNamespace($function->getReturns()));
         $docBlock->setTag($tag);
         $method->setBody(sprintf('return $this->__soapCall("%s", func_get_args());', $function->getName()));
         $method->setDocBlock($docBlock);
         $code->addMethodFromGenerator($method);
     }
     return $code;
 }
 protected function handleSecondClassElements(CodeGenerator\ClassGenerator $classGenerator, array &$map, DOMNodeList $secondClassElements, DOMNode $element, DOMXPath $xpath)
 {
     foreach ($secondClassElements as $secondClassElement) {
         $maxOccursNode = $xpath->query('@maxOccurs', $secondClassElement)->item(0);
         $maxOccurs = $maxOccursNode ? $maxOccursNode->textContent : null;
         $unbounded = $maxOccurs == 'unbounded';
         $hydrationModifier = '#';
         $secondClassElementName = null;
         $secondClassElementNameNode = $xpath->query('@name', $secondClassElement)->item(0);
         if ($secondClassElementNameNode) {
             $secondClassElementName = $secondClassElementNameNode->textContent;
             $this->generateResource($secondClassElement);
         } else {
             $secondClassElementNameNode = $xpath->query('@ref', $secondClassElement)->item(0);
             if ($secondClassElementNameNode) {
                 if (substr($secondClassElementNameNode->textContent, 0, 4) == "tns:") {
                     $secondClassElementName = substr($secondClassElementNameNode->textContent, 4);
                 } elseif (substr($secondClassElementNameNode->textContent, 0, 5) == "data:") {
                     $secondClassElementName = substr($secondClassElementNameNode->textContent, 5);
                 }
             }
         }
         if (!$secondClassElementName) {
             continue;
         }
         $secondClassElementType = $secondClassElementName;
         if ($unbounded) {
             $secondClassElementType .= "[]";
         }
         $propertyName = lcfirst($secondClassElementName);
         if ($unbounded) {
             $propertyName .= 's';
         }
         $secondClassElementProperty = clone $this->getPropertyGenerator();
         $secondClassElementProperty->setName($propertyName);
         if ($unbounded) {
             $secondClassElementProperty->setDefaultValue(new CodeGenerator\PropertyValueGenerator(array()));
             $hydrationModifier .= '@';
             $mapKeyName = "{$secondClassElementName}s";
         } else {
             $mapKeyName = $secondClassElementName;
         }
         if ($secondClassElementType) {
             $secondClassElementPropertyDocblock = clone $this->getPropertyDocblockGenerator();
             $secondClassElementProperty->setDocBlock($secondClassElementPropertyDocblock);
             $typeTag = new CodeGenerator\DocBlock\Tag();
             $typeTag->setName('var');
             $typeTag->setDescription($secondClassElementType);
             $secondClassElementPropertyDocblock->setTag($typeTag);
         }
         $classGenerator->addPropertyFromGenerator($secondClassElementProperty);
         $getterGenerator = $this->generatePropertyGetter($propertyName);
         $setterGenerator = $this->generatePropertySetter($propertyName);
         $classGenerator->addMethods(array($getterGenerator, $setterGenerator));
         $map["{$hydrationModifier}{$mapKeyName}"] = "_:{$secondClassElementName}";
     }
 }