/**
  *
  * @param mixed $xml
  * @return array[]
  */
 protected function getYamlFiles($xml, array $types = array())
 {
     $creator = new YamlConverter(new ShortNamingStrategy());
     $creator->addNamespace('', 'Example');
     foreach ($types as $typeData) {
         list($ns, $name, $type) = $typeData;
         $creator->addAliasMapType($ns, $name, $type);
     }
     $reader = new SchemaReader();
     if (!is_array($xml)) {
         $xml = ['schema.xsd' => $xml];
     }
     $schemas = [];
     foreach ($xml as $name => $str) {
         $schemas[] = $reader->readString($str, $name);
     }
     $items = $creator->convert($schemas);
     return $items;
 }
Ejemplo n.º 2
0
 protected static function generateJMSFiles(array $schemas)
 {
     $yamlcreator = new YamlConverter(new ShortNamingStrategy());
     $yamlcreator->addNamespace('http://www.opentravel.org/OTA/2003/05', self::$namespace);
     $yamlcreator->addAliasMapType('http://www.opentravel.org/OTA/2003/05', 'DateOrTimeOrDateTimeType', 'Goetas\\Xsd\\XsdToPhp\\Tests\\JmsSerializer\\OTA\\OTADateTime');
     $yamlcreator->addAliasMapType('http://www.opentravel.org/OTA/2003/05', 'DateOrDateTimeType', 'Goetas\\Xsd\\XsdToPhp\\Tests\\JmsSerializer\\OTA\\OTADateTime');
     $yamlcreator->addAliasMapType('http://www.opentravel.org/OTA/2003/05', 'TimeOrDateTimeType', 'Goetas\\Xsd\\XsdToPhp\\Tests\\JmsSerializer\\OTA\\OTADateTime');
     $items = $yamlcreator->convert($schemas);
     $dumper = new Dumper();
     $pathGenerator = new JmsPsr4PathGenerator(array(self::$namespace . "\\" => self::$jmsDir));
     foreach ($items as $item) {
         $path = $pathGenerator->getPath($item);
         file_put_contents($path, $dumper->dump($item, 10000));
     }
     $serializerBuiler = \JMS\Serializer\SerializerBuilder::create();
     $serializerBuiler->configureHandlers(function (HandlerRegistryInterface $h) use($serializerBuiler) {
         $serializerBuiler->addDefaultHandlers();
         $h->registerSubscribingHandler(new BaseTypesHandler());
         $h->registerSubscribingHandler(new XmlSchemaDateHandler());
         $h->registerSubscribingHandler(new OTASchemaDateHandler());
     });
     $serializerBuiler->addMetadataDir(self::$jmsDir, self::$namespace);
     self::$serializer = $serializerBuiler->build();
 }