Exemple #1
0
 /**
  * @param ClassTemplate $classTemplate
  * @param XSDMap\XSDMapEntry $mapEntry
  */
 public static function addBaseClassProperties(ClassTemplate $classTemplate, XSDMap\XSDMapEntry $mapEntry)
 {
     // Add the source element name to each class...
     $property = new BasePropertyTemplate(new PHPScopeEnum(PHPScopeEnum::_PRIVATE), true, false);
     $property->setDefaultValue($mapEntry->fhirElementName);
     $property->setName('_fhirElementName');
     $property->setPHPType('string');
     $property->setPrimitive(true);
     $classTemplate->addProperty($property);
 }
 /**
  * @param XSDMap $XSDMap
  * @param ClassTemplate $classTemplate
  * @param \SimpleXMLElement $element
  * @param string $documentation
  * @param string $maxOccurs
  * @return BasePropertyTemplate|null
  */
 public static function buildProperty(XSDMap $XSDMap, ClassTemplate $classTemplate, \SimpleXMLElement $element, $documentation = null, $maxOccurs = null)
 {
     $propertyTemplate = new BasePropertyTemplate();
     $attributes = $element->attributes();
     if (null === $documentation) {
         $propertyTemplate->setDocumentation(XMLUtils::getDocumentation($element));
     }
     if (null === $maxOccurs && isset($attributes['maxOccurs'])) {
         $maxOccurs = (string) $attributes['maxOccurs'];
     }
     if (null !== $maxOccurs && '' !== $maxOccurs) {
         $propertyTemplate->setCollection(self::determineIfCollection($maxOccurs));
     }
     $name = (string) $attributes['name'];
     $type = (string) $attributes['type'];
     $ref = (string) $attributes['ref'];
     if ('' === $name) {
         if ('' === $ref) {
             trigger_error(sprintf('Encountered property on FHIR object "%s" with no "name" or "ref" attribute, cannot create property for it.  Property definition: "%s"', $classTemplate->getElementName(), $element->saveXML()));
             return null;
         }
         if (0 === strpos($ref, 'xhtml')) {
             $propertyTemplate->setName(substr($ref, 6));
             $propertyTemplate->setFHIRElementType('html');
             $propertyTemplate->setHTML(true);
             $propertyTemplate->setPHPType('string');
             return $propertyTemplate;
         }
         $name = $ref;
         $type = $ref;
     }
     $propertyTemplate->setName($name);
     $propertyTemplate->setFHIRElementType($type);
     // TODO: Implement proper primitive types
     if (false !== strpos($type, '-primitive')) {
         $propertyTemplate->setPrimitive(true);
         $propertyTemplate->setPHPType('string');
     } else {
         if (false !== strpos($type, '-list')) {
             $propertyTemplate->setList(true);
             $propertyTemplate->setPHPType('string');
         } else {
             if (0 === strpos($type, 'xs:')) {
                 $propertyTemplate->setPHPType($XSDMap->getClassUseStatementForFHIRElementName(substr($type, 3)));
             } else {
                 $propertyTemplate->setPHPType($XSDMap->getClassUseStatementForFHIRElementName($type));
             }
         }
     }
     return $propertyTemplate;
 }