/**
  *
  * @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;
 }
Ejemplo n.º 2
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();
         }
     }
 }