/** * * @param PHPClass $class * @param Schema $schema * @param Element $element * @param boolean $arrayize * @return \GoetasWebservices\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; }