/** * * @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; }
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(); }