Goetas\Xsd\XsdToPhp\Php\PhpConverter::visitElement PHP Method

visitElement() private method

private visitElement ( PHPClass $class, GoetasWebservices\XML\XSDReader\Schema\Schema $schema, GoetasWebservices\XML\XSDReader\Schema\Element\ElementSingle $element, boolean $arrayize = true ) : Goetas\Xsd\XsdToPhp\Structure\PHPProperty
$class Goetas\Xsd\XsdToPhp\Php\Structure\PHPClass
$schema GoetasWebservices\XML\XSDReader\Schema\Schema
$element GoetasWebservices\XML\XSDReader\Schema\Element\ElementSingle
$arrayize boolean
return Goetas\Xsd\XsdToPhp\Structure\PHPProperty
    private function visitElement(PHPClass $class, Schema $schema, ElementSingle $element, $arrayize = true)
    {
        $property = new PHPProperty();
        $property->setName($this->getNamingStrategy()->getPropertyName($element));
        $property->setDoc($element->getDoc());
        $t = $element->getType();
        if ($arrayize) {
            if ($itemOfArray = $this->isArrayType($t)) {
                if (!$itemOfArray->getName()) {
                    $classType = $this->visitTypeAnonymous($itemOfArray, $element->getName(), $class);
                } else {
                    $classType = $this->visitType($itemOfArray);
                }
                $arg = new PHPArg($this->getNamingStrategy()->getPropertyName($element));
                $arg->setType($classType);
                $property->setType(new PHPClassOf($arg));
                return $property;
            } elseif ($itemOfArray = $this->isArrayNestedElement($t)) {
                if (!$t->getName()) {
                    $classType = $this->visitTypeAnonymous($t, $element->getName(), $class);
                } else {
                    $classType = $this->visitType($t);
                }
                $elementProp = $this->visitElement($classType, $schema, $itemOfArray, false);
                $property->setType(new PHPClassOf($elementProp));
                return $property;
            } elseif ($this->isArrayElement($element)) {
                $arg = new PHPArg($this->getNamingStrategy()->getPropertyName($element));
                $arg->setType($this->findPHPClass($class, $element));
                $arg->setDefault('array()');
                $property->setType(new PHPClassOf($arg));
                return $property;
            }
        }
        $property->setType($this->findPHPClass($class, $element, true));
        return $property;
    }