Inheritance: extends Goetas\Xsd\XsdToPhp\AbstractConverter
 /**
  *
  * @param mixed $xml
  * @return \Zend\Code\Generator\ClassGenerator[]
  */
 protected function getPhpClasses($xml, array $types = array())
 {
     $creator = new PhpConverter(new ShortNamingStrategy());
     $creator->addNamespace('', 'Example');
     foreach ($types as $typeData) {
         list($ns, $name, $type) = $typeData;
         $creator->addAliasMapType($ns, $name, $type);
     }
     $generator = new ClassGenerator();
     $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);
     $classes = array();
     foreach ($items as $k => $item) {
         $codegen = new \Zend\Code\Generator\ClassGenerator();
         if ($generator->generate($codegen, $item)) {
             $classes[$k] = $codegen;
         }
     }
     return $classes;
 }
Example #2
0
 public function testMissingClass()
 {
     $expectedItems = array('Epa\\Schema\\AdditionalIdentifier', 'Epa\\Schema\\AdditionalIdentifierType', 'Epa\\Schema\\AdditionalIdentifierTypes', 'Epa\\Schema\\AdditionalIdentifiers');
     $expectedItems = array_combine($expectedItems, $expectedItems);
     $reader = new SchemaReader();
     $schema = $reader->readFile(__DIR__ . '/data.xsd');
     $yamlConv = new YamlConverter(new ShortNamingStrategy());
     $yamlConv->addNamespace('', 'Epa\\Schema');
     $yamlItems = $yamlConv->convert([$schema]);
     $this->assertCount(count($expectedItems), $yamlItems);
     $this->assertEmpty(array_diff_key($expectedItems, $yamlItems));
     $phpConv = new PhpConverter(new ShortNamingStrategy());
     $phpConv->addNamespace('', 'Epa\\Schema');
     $phpClasses = $phpConv->convert([$schema]);
     $this->assertCount(count($expectedItems), $phpClasses);
     $this->assertEmpty(array_diff_key($expectedItems, $phpClasses));
     $yamlClass = $yamlItems['Epa\\Schema\\AdditionalIdentifier']['Epa\\Schema\\AdditionalIdentifier'];
     $yamlProperty = $yamlClass['properties']['additionalIdentifierType'];
     /** @var PHPClass $phpClass */
     $phpClass = $phpClasses['Epa\\Schema\\AdditionalIdentifier'];
     /** @var PHPProperty $phpProperty */
     $phpProperty = $phpClass->getProperty('additionalIdentifierType');
     /** @var PHPClass $phpType */
     $phpType = $phpProperty->getType();
     $this->assertSame($yamlProperty['type'], $phpType->getFullName());
 }
Example #3
0
 public function testNaming()
 {
     $reader = new SchemaReader();
     $schema = $reader->readFile(__DIR__ . '/data.xsd');
     $phpConv = new PhpConverter(new ShortNamingStrategy());
     $phpConv->addNamespace('http://www.example.com/', 'Epa');
     $phpClasses = $phpConv->convert([$schema]);
     $this->assertEquals('convertToReseller', $phpClasses['Epa\\Two']->getProperty('convertToReseller')->getType()->getArg()->getName());
 }
Example #4
0
 public function testNaming()
 {
     $reader = new SchemaReader();
     $schema = $reader->readFile(__DIR__ . '/data.xsd');
     $phpConv = new PhpConverter(new ShortNamingStrategy());
     $phpConv->addNamespace('http://www.example.com/', 'Epa');
     $phpClasses = $phpConv->convert([$schema]);
     $this->assertArrayHasKey('Epa\\ABType', $phpClasses);
     $class = $phpClasses['Epa\\ABType'];
     $this->assertArrayHasKey('cDe', $class->getProperties());
     $this->assertArrayHasKey('fGh', $class->getProperties());
 }
Example #5
0
 public function testMissingClass()
 {
     $expectedItems = array('Epa\\Job', 'Epa\\Item', 'Epa\\Item\\PriceAType');
     $reader = new SchemaReader();
     $schema = $reader->readFile(__DIR__ . '/data.xsd');
     $yamlConv = new YamlConverter(new ShortNamingStrategy());
     $yamlConv->addNamespace('http://www.trogon.si/Schemas/2010/JobXML/2.0', 'Epa');
     $yamlItems = $yamlConv->convert([$schema]);
     $yamlItems = array_keys($yamlItems);
     $this->assertEmpty(array_diff($expectedItems, $yamlItems));
     $phpConv = new PhpConverter(new ShortNamingStrategy());
     $phpConv->addNamespace('http://www.trogon.si/Schemas/2010/JobXML/2.0', 'Epa');
     $phpClasses = $phpConv->convert([$schema]);
     $phpClasses = array_keys($phpClasses);
     $this->assertEmpty(array_diff_key($expectedItems, $phpClasses));
 }
Example #6
0
 /**
  * @group long
  */
 public function testOpcGeneration()
 {
     $nss = array("http://schemas.openxmlformats.org/package/2006/metadata/core-properties" => "Iag/ECMA376/Package/Model/CoreProperties/", "http://purl.org/dc/elements/1.1/" => "Iag/ECMA376/Package/Model/CoreProperties/DcElements/", "http://purl.org/dc/terms/" => "Iag/ECMA376/Package/Model/CoreProperties/DcTerms/", "http://purl.org/dc/dcmitype/" => "Iag/ECMA376/Package/Model/CoreProperties/DcMiType/");
     $reader = new SchemaReader();
     $reader->addKnownSchemaLocation('http://dublincore.org/schemas/xmls/qdc/2003/04/02/dc.xsd', __DIR__ . '/opc/dc.xsd');
     $reader->addKnownSchemaLocation('http://dublincore.org/schemas/xmls/qdc/2003/04/02/dcterms.xsd', __DIR__ . '/opc/dcterms.xsd');
     $reader->addKnownSchemaLocation('http://dublincore.org/schemas/xmls/qdc/2003/04/02/dcterms.xsd', __DIR__ . '/opc/dcterms.xsd');
     $reader->addKnownSchemaLocation('http://dublincore.org/schemas/xmls/qdc/2003/04/02/dcmitype.xsd', __DIR__ . '/opc/dcmitype.xsd');
     $schema = $reader->readFile(__DIR__ . '/opc/opc-coreProperties.xsd');
     $yamlConv = new YamlConverter(new ShortNamingStrategy());
     $phpConv = new PhpConverter(new ShortNamingStrategy());
     foreach ($nss as $ns => $php) {
         $yamlConv->addNamespace($ns, $php);
         $phpConv->addNamespace($ns, $php);
     }
     $yamlItems = $yamlConv->convert([$schema]);
     $phpClasses = $phpConv->convert([$schema]);
     $this->assertEquals(count($phpClasses), count($yamlItems));
 }
 /**
  *
  * @param mixed $xml
  * @return \Zend\Code\Generator\ClassGenerator[]
  */
 protected function getClasses($xml)
 {
     $phpcreator = new PhpConverter(new ShortNamingStrategy());
     $phpcreator->addNamespace('http://www.example.com', 'Example');
     $generator = new ClassGenerator();
     $reader = new SchemaReader();
     if (!is_array($xml)) {
         $xml = ['schema.xsd' => $xml];
     }
     $schemas = [];
     foreach ($xml as $name => $str) {
         $schemas[] = $reader->readString($str, $name);
     }
     $items = $phpcreator->convert($schemas);
     $classes = array();
     foreach ($items as $k => $item) {
         $codegen = new \Zend\Code\Generator\ClassGenerator();
         if ($generator->generate($codegen, $item)) {
             $classes[$k] = $codegen;
         }
     }
     return $classes;
 }
Example #8
0
 public function __construct(NamingStrategy $namingStrategy)
 {
     parent::__construct($namingStrategy);
     $this->addAliasMap("http://www.w3.org/2001/XMLSchema", "dateTime", function (Type $type) {
         return "DateTime";
     });
     $this->addAliasMap("http://www.w3.org/2001/XMLSchema", "time", function (Type $type) {
         return "DateTime";
     });
     $this->addAliasMap("http://www.w3.org/2001/XMLSchema", "date", function (Type $type) {
         return "DateTime";
     });
     $this->addAliasMap("http://www.w3.org/2001/XMLSchema", "anySimpleType", function (Type $type) {
         return "mixed";
     });
     $this->addAliasMap("http://www.w3.org/2001/XMLSchema", "anyType", function (Type $type) {
         return "mixed";
     });
     $this->addAliasMap("http://www.w3.org/2001/XMLSchema", "base64Binary", function (Type $type) {
         return "string";
     });
 }
Example #9
0
 protected static function generatePHPFiles(array $schemas)
 {
     $phpcreator = new PhpConverter(new ShortNamingStrategy());
     $phpcreator->addNamespace('http://www.opentravel.org/OTA/2003/05', self::$namespace);
     $phpcreator->addAliasMapType('http://www.opentravel.org/OTA/2003/05', 'DateOrTimeOrDateTimeType', 'Goetas\\Xsd\\XsdToPhp\\Tests\\JmsSerializer\\OTA\\OTADateTime');
     $phpcreator->addAliasMapType('http://www.opentravel.org/OTA/2003/05', 'DateOrDateTimeType', 'Goetas\\Xsd\\XsdToPhp\\Tests\\JmsSerializer\\OTA\\OTADateTime');
     $phpcreator->addAliasMapType('http://www.opentravel.org/OTA/2003/05', 'TimeOrDateTimeType', 'Goetas\\Xsd\\XsdToPhp\\Tests\\JmsSerializer\\OTA\\OTADateTime');
     $items = $phpcreator->convert($schemas);
     $generator = new ClassGenerator();
     $pathGenerator = new Psr4PathGenerator(array(self::$namespace . "\\" => self::$phpDir));
     foreach ($items as $item) {
         $path = $pathGenerator->getPath($item);
         $fileGen = new FileGenerator();
         $fileGen->setFilename($path);
         $classGen = new \Zend\Code\Generator\ClassGenerator();
         if ($generator->generate($classGen, $item)) {
             $fileGen->setClass($classGen);
             $fileGen->write();
         }
     }
 }
Example #10
0
 protected function getClasses($xml)
 {
     $schema = $this->reader->readString($xml);
     return $this->converter->convert(array($schema));
 }