private function loadExtension(BaseComplexType $type, DOMElement $node) { $extension = new Extension(); $type->setExtension($extension); if ($node->hasAttribute("base")) { $parent = $this->findSomething('findType', $type->getSchema(), $node, $node->getAttribute("base")); $extension->setBase($parent); } foreach ($node->childNodes as $childNode) { switch ($childNode->localName) { case 'sequence': case 'choice': case 'all': $this->loadSequence($type, $childNode); break; case 'attribute': if ($childNode->hasAttribute("ref")) { $attribute = $this->findSomething('findAttribute', $type->getSchema(), $node, $childNode->getAttribute("ref")); } else { $attribute = $this->loadAttribute($type->getSchema(), $childNode); } $type->addAttribute($attribute); break; case 'attributeGroup': $attribute = $this->findSomething('findAttributeGroup', $type->getSchema(), $node, $childNode->getAttribute("ref")); $type->addAttribute($attribute); break; } } }
private function visitBaseComplexType(PHPClass $class, BaseComplexType $type) { $parent = $type->getParent(); if ($parent) { $parentType = $parent->getBase(); if ($parentType instanceof Type) { $this->handleClassExtension($class, $parentType); } } $schema = $type->getSchema(); foreach ($type->getAttributes() as $attr) { if ($attr instanceof AttributeGroup) { $this->visitAttributeGroup($class, $schema, $attr); } else { $property = $this->visitAttribute($class, $schema, $attr); $class->addProperty($property); } } }
private function visitBaseComplexType(&$class, &$data, BaseComplexType $type, $name) { $parent = $type->getParent(); if ($parent) { $parentType = $parent->getBase(); if ($parentType instanceof Type) { $this->handleClassExtension($class, $data, $parentType, $name); } } $schema = $type->getSchema(); if (!isset($data["properties"])) { $data["properties"] = array(); } foreach ($this->flattAttributes($type) as $attr) { $data["properties"][Inflector::camelize($attr->getName())] = $this->visitAttribute($class, $schema, $attr); } }