flysystem = new Flysystem($adapter); $this->contractTemplate = new Template('Contract.php.twig'); $this->typeTemplate = new Template('Type.php.twig'); $this->builderClassTemplate = new Template('Schema.php.twig'); $this->graphClassTemplate = new Template('Graph.php.twig'); $this->multiTypedEntityClassTemplate = new Template('MultiTypedEntity.php.twig'); } public function clear() { $this->flysystem->deleteDirectory('src'); $this->flysystem->createDirectory('src'); } public function cloneStaticFiles() { $files = $this->flysystem->listContents('generator/templates/static', true); foreach ($files as $file) { if ($file['type'] !== 'file') { continue; } $this->flysystem->write( str_replace('generator/templates/static', 'src', $file['path']), $this->flysystem->read($file['path']) ); } } public function createType(Type $type) { $this->flysystem->write( "src/Contracts/{$type->className}Contract.php", $this->contractTemplate->render(['type' => $type]) ); $this->flysystem->write( "src/{$type->className}.php", $this->typeTemplate->render(['type' => $type]) ); } public function createBuilderClass(TypeCollection $types) { $this->flysystem->write( 'src/Schema.php', $this->builderClassTemplate->render(['types' => $types->toArray()]) ); $this->flysystem->write( 'src/Graph.php', $this->graphClassTemplate->render(['types' => $types->toArray()]) ); $this->flysystem->write( 'src/MultiTypedEntity.php', $this->multiTypedEntityClassTemplate->render(['types' => $types->toArray()]) ); } }