Goetas\Xsd\XsdToPhp\Php\ClassGenerator::handleAdder PHP Method

handleAdder() private method

private handleAdder ( ClassGenerator $generator, Goetas\Xsd\XsdToPhp\Php\Structure\PHPProperty $prop, PHPClass $class )
$generator Zend\Code\Generator\ClassGenerator
$prop Goetas\Xsd\XsdToPhp\Php\Structure\PHPProperty
$class Goetas\Xsd\XsdToPhp\Php\Structure\PHPClass
    private function handleAdder(Generator\ClassGenerator $generator, PHPProperty $prop, PHPClass $class)
    {
        $type = $prop->getType();
        $propName = $type->getArg()->getName();
        $docblock = new DocBlockGenerator();
        $docblock->setShortDescription("Adds as {$propName}");
        if ($prop->getDoc()) {
            $docblock->setLongDescription($prop->getDoc());
        }
        $return = new ReturnTag();
        $return->setTypes("self");
        $docblock->setTag($return);
        $patramTag = new ParamTag($propName, $this->getPhpType($type->getArg()->getType()));
        $docblock->setTag($patramTag);
        $method = new MethodGenerator("addTo" . Inflector::classify($prop->getName()));
        $parameter = new ParameterGenerator($propName);
        $tt = $type->getArg()->getType();
        if (!$this->isNativeType($tt)) {
            if ($p = $this->isOneType($tt)) {
                if ($t = $p->getType()) {
                    $patramTag->setTypes($this->getPhpType($t));
                    if (!$this->isNativeType($t)) {
                        $parameter->setType($this->getPhpType($t));
                    }
                }
            } elseif (!$this->isNativeType($tt)) {
                $parameter->setType($this->getPhpType($tt));
            }
        }
        $methodBody = "\$this->" . $prop->getName() . "[] = \$" . $propName . ";" . PHP_EOL;
        $methodBody .= "return \$this;";
        $method->setBody($methodBody);
        $method->setDocBlock($docblock);
        $method->setParameter($parameter);
        $generator->addMethodFromGenerator($method);
    }