/** * Generate the code for the given className and primaryKey and write it in a file. * @param string $className The class name. * @param string $primaryKey The primary key. */ private function generateCode($className, $primaryKey) { $tags = $this->config->getTags(); $class = new ClassGenerator(); $docblock = DocBlockGenerator::fromArray(array('shortDescription' => ucfirst($className) . ' model class', 'longDescription' => 'This is a model class generated with DavidePastore\\ParisModelGenerator.', 'tags' => $tags)); $idColumn = new PropertyGenerator('_id_column'); $idColumn->setStatic(true)->setDefaultValue($primaryKey); $table = new PropertyGenerator('_table'); $table->setStatic(true)->setDefaultValue($className); $tableUseShortName = new PropertyGenerator('_table_use_short_name'); $tableUseShortName->setStatic(true)->setDefaultValue(true); $namespace = $this->config->getNamespace(); $extendedClass = '\\Model'; if (isset($namespace) && !empty($namespace)) { $class->setNamespaceName($this->config->getNamespace()); } $class->setName(ucfirst($className))->setDocblock($docblock)->setExtendedClass($extendedClass)->addProperties(array($idColumn, $table, $tableUseShortName)); $file = FileGenerator::fromArray(array('classes' => array($class), 'docblock' => DocBlockGenerator::fromArray(array('shortDescription' => ucfirst($className) . ' class file', 'longDescription' => null, 'tags' => $tags)))); $generatedCode = $file->generate(); $directory = $this->config->getDestinationFolder() . $namespace; if (!file_exists($directory)) { mkdir($directory, 0777, true); } $filePath = $directory . "/" . $class->getName() . ".php"; if (file_exists($filePath) && !$this->force) { $helper = $this->getHelper('question'); $realPath = realpath($filePath); $this->output->writeln("\n"); $question = new ConfirmationQuestion('Do you want to overwrite the file "' . $realPath . '"?', false); if ($helper->ask($this->input, $this->output, $question)) { $this->writeInFile($filePath, $generatedCode); } } else { $this->writeInFile($filePath, $generatedCode); } }