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}"; } }