/** * Generate a constructor */ private function _generateGetServiceConfig($className, $tables) { $this->_data .= "\t/**\n"; $this->_data .= "\t* getServiceConfig\n"; $this->_data .= "\t*\n"; $this->_data .= "\t**/\n"; $this->_data .= "\tpublic function getServiceConfig()\n"; $this->_data .= "\t{\n"; $this->_data .= "\t\treturn array(\n"; $this->_data .= "\t\t\t'shared' => array(\n"; $this->_data .= "\t\t\t),\n"; $this->_data .= "\t\t\t'factories' => array(\n"; // First add mappers $this->_data .= "\t\t\t\t// Adding all mappers for namespace\n"; foreach ($tables as $table => $data) { $this->_data .= "\t\t\t\t'" . ZendModelCreator::getNamespace() . "\\Mapper\\" . ZendModelCreator::toCamelCase(ucfirst(strtolower($table))) . "Mapper' => function(\$sm) {\n"; $this->_data .= "\t\t\t\t\t\$mapper = new Mapper\\" . ZendModelCreator::toCamelCase(ucfirst(strtolower($table))) . "Mapper;\n"; $this->_data .= "\t\t\t\t\t\$mapper->setDbAdapter(\$sm->get('" . strtolower(ZendModelCreator::getNamespace()) . "_zend_db_adapter'));\n"; $this->_data .= "\t\t\t\t\treturn \$mapper;\n"; $this->_data .= "\t\t\t\t},\n"; } $this->_data .= "\n"; $this->_data .= "\t\t\t\t// Adding all services for namespace\n"; // Then add Services foreach ($tables as $table => $data) { $this->_data .= "\t\t\t\t'" . ZendModelCreator::getNamespace() . "\\Service\\" . ZendModelCreator::toCamelCase(ucfirst(strtolower($table))) . "' => function(\$sm) {\n"; $this->_data .= "\t\t\t\t\t\$service = new Service\\" . ZendModelCreator::toCamelCase(ucfirst(strtolower($table))) . ";\n"; $this->_data .= "\t\t\t\t\t\$service->setMapper(\$sm->get('" . ZendModelCreator::getNamespace() . "\\Mapper\\" . ZendModelCreator::toCamelCase(ucfirst(strtolower($table))) . "Mapper'));\n"; $this->_data .= "\t\t\t\t\t\$service->setOptions(\$sm->get('" . ZendModelCreator::getNamespace() . "\\Options\\ModuleOptions'));\n"; $this->_data .= "\t\t\t\t\treturn \$service;\n"; $this->_data .= "\t\t\t\t},\n"; } // Add module options $this->_data .= "\n"; $this->_data .= "\t\t\t\t// Adding module options\n"; $this->_data .= "\t\t\t\t'" . ZendModelCreator::getNamespace() . "\\Options\\ModuleOptions' => function(\$sm) {\n"; $this->_data .= "\t\t\t\t\t\$config = \$sm->get('Configuration');\n"; $this->_data .= "\t\t\t\t\t\$moduleConfig = isset(\$config['" . strtolower(ZendModelCreator::getNamespace()) . "']) ? \$config['" . strtolower(ZendModelCreator::getNamespace()) . "'] : array();\n"; $this->_data .= "\t\t\t\t\treturn new Options\\ModuleOptions(\$moduleConfig);\n"; $this->_data .= "\t\t\t\t},\n"; $this->_data .= "\t\t\t),\n"; $this->_data .= "\t\t);\n"; $this->_data .= "\t}\n\n"; }
/** * Generates header for entity class * */ private function _generateClassHeader($className) { $this->_data .= "<?php\n/**\n* file: " . ucfirst(strtolower($className)) . ".php\n* " . ucfirst(strtolower($className)) . " entity\n*\n* @author " . ZendModelCreator::getGenerator() . "\n* @version " . ZendModelCreator::getVersion() . "\n* @package " . ZendModelCreator::getNamespace() . "\n* @since " . date("Y-m-d") . "\n* @package " . ZendModelCreator::getNamespace() . "\n*/\n\nnamespace " . ZendModelCreator::getNamespace() . "\\Entity;\n\n/**\n* " . ucfirst(strtolower($className)) . "\n*\n* @author " . ZendModelCreator::getGenerator() . "\n* @version " . ZendModelCreator::getVersion() . "\n* @package " . ZendModelCreator::getNamespace() . "\n* @since " . date("Y-m-d") . "\n*\n**/\nclass " . ucfirst(strtolower($className)) . "\n{\n"; }
/** * Generates header for Options class * */ private function _generateClassHeader($className) { $this->_data .= "<?php\n/**\n* file: ModuleOptions.php\n* Module options\n*\n* @author " . ZendModelCreator::getGenerator() . "\n* @version " . ZendModelCreator::getVersion() . "\n* @package " . ZendModelCreator::getNamespace() . "\n* @package " . ZendModelCreator::getNamespace() . "\n* @since " . date("Y-m-d") . "\n*/\n\nnamespace " . ZendModelCreator::getNamespace() . "\\Options;\n\nuse Zend\\Stdlib\\AbstractOptions;\n\n/**\n* Module\n*\n* @author " . ZendModelCreator::getGenerator() . "\n* @version " . ZendModelCreator::getVersion() . "\n* @package " . ZendModelCreator::getNamespace() . "\n* @since " . date("Y-m-d") . "\n*\n**/\nclass ModuleOptions extends AbstractOptions\n{\n protected \$__strictMode__ = false;\n protected \$hydrateResultsByDefault = true;\n"; }
/** * Generates setEventManager * */ private function _generateSetEventManager($className) { // Set fetch function headers $this->_data .= "\t/**\n"; $this->_data .= "\t* Set the Event Manager\n"; $this->_data .= "\t*\n"; $this->_data .= "\t* @param object Zend\\EventManager\\EventManagerInterface\n"; $this->_data .= "\t* @return object \$this\n"; $this->_data .= "\t**/\n"; $this->_data .= "\tpublic function setEventManager(EventManagerInterface \$eventManager)\n"; $this->_data .= "\t{\n"; $this->_data .= "\t\t\$eventManager->setIdentifiers(\n"; $this->_data .= "\t\t\t__CLASS__,\n"; $this->_data .= "\t\t\tget_called_class(),\n"; $this->_data .= "\t\t\t'" . strtolower($className) . "'\n"; $this->_data .= "\t\t);\n"; $this->_data .= "\n"; $this->_data .= "\t\t\$eventManager->setEventClass('" . ZendModelCreator::getNamespace() . "\\Service\\" . ucfirst(strtolower($className)) . "Event');\n"; $this->_data .= "\n"; $this->_data .= "\t\t\$this->eventManager = \$eventManager;\n"; $this->_data .= "\t\treturn \$this;\n"; $this->_data .= "\t}\n"; }
/** * Get generated data from our services */ public function getDataFromServices() { $createModule = false; $createAutoloaders = false; $createConfig = false; $createOptions = false; foreach (self::$tables as $table => $data) { // clean interface array foreach ($this->getSetting('types') as $type => $get_data) { if ($get_data) { // Quit if no primary key is set. if (isset($data['primary_key'])) { // set object names to Ucfirst then lowercase. $table = ucfirst(strtolower($table)); switch ($type) { case "create_entity": $EntityService = new EntityCreatorService(); $this->_data[$table]['entity'] = $EntityService->createEntity($table, $data); break; case "create_mapper": $MapperService = new MapperCreatorService(); $this->_data[$table]['mapper'] = $MapperService->createMapper($table, $data); break; case "create_service": $serviceCreator = new ServiceCreatorService(); $this->_data[$table]['service'] = $serviceCreator->createService($table, $data); $EventService = new EventCreatorService(); $this->_data[$table]['service_event'] = $EventService->createEventService($table, $data); break; case "create_module": $createModule = true; break; case "create_autoloaders": $createAutoloaders = true; break; case "create_config": $createConfig = true; break; case "create_options": $createOptions = true; break; default: die("Settings not set correctly. [types]"); break; } } } } } // Check if we want to create the module if ($createModule) { $moduleCreator = new ModuleCreatorService(); $this->_files['module'] = $moduleCreator->createModule($table, self::$tables); } // Check if we want to create the options file if ($createOptions) { $optionsCreator = new OptionsCreatorService(); $this->_files['options'] = $optionsCreator->createOptions($table); } // Check if we want to create the config if ($createConfig) { // Build config file $this->_files['config'] = "<?php\n"; $this->_files['config'] .= "return array(\n"; $this->_files['config'] .= "\t'service_manager' => array(\n"; $this->_files['config'] .= "\t\t'aliases' => array(\n"; $this->_files['config'] .= "\t\t\t'" . strtolower(self::getNamespace()) . "_zend_db_adapter' => 'Zend\\Db\\Adapter\\Adapter',\n"; $this->_files['config'] .= "\t\t),\n"; $this->_files['config'] .= "\t),\n"; $this->_files['config'] .= ");"; } // Check if we want to create the options file if ($createConfig) { // Build config file $this->_files['config'] = "<?php\n"; $this->_files['config'] .= "return array(\n"; $this->_files['config'] .= "\t'service_manager' => array(\n"; $this->_files['config'] .= "\t\t'aliases' => array(\n"; $this->_files['config'] .= "\t\t\t'" . strtolower(self::getNamespace()) . "_zend_db_adapter' => 'Zend\\Db\\Adapter\\Adapter',\n"; $this->_files['config'] .= "\t\t),\n"; $this->_files['config'] .= "\t),\n"; $this->_files['config'] .= ");"; } // Check if we want to create autoloaders if ($createAutoloaders) { // Build classmap file $this->_files['classmap'] = "<?php\n"; $this->_files['classmap'] .= "return array(\n"; $this->_files['classmap'] .= "\t'" . ZendModelCreator::getNamespace() . "\\Module' => __DIR__ . '/Module.php',\n"; $this->_files['classmap'] .= ");"; // Build function file $this->_files['function'] = "<?php\n"; $this->_files['function'] .= "return function (\$class) {\n"; $this->_files['function'] .= "\tstatic \$map;\n"; $this->_files['function'] .= "\tif (!\$map) {\n"; $this->_files['function'] .= "\t\t\$map = include __DIR__ . '/autoload_classmap.php';\n"; $this->_files['function'] .= "\t}\n"; $this->_files['function'] .= "\tif (!isset(\$map[\$class])) {\n"; $this->_files['function'] .= "\t\treturn false;\n"; $this->_files['function'] .= "\t}\n"; $this->_files['function'] .= "\treturn include \$map[\$class];\n"; $this->_files['function'] .= "};\n"; // Build register file $this->_files['register'] = "<?php\n"; $this->_files['register'] .= "spl_autoload_register(include __DIR__ . '/autoload_function.php');"; } }
/** * Generate persist method * */ private function _generatePersist($className) { // Set fetch function headers $this->_data .= "\t/**\n"; $this->_data .= "\t* Save a record\n"; $this->_data .= "\t*\n"; $this->_data .= "\t* @param object " . ZendModelCreator::getNamespace() . "\\Entity\\" . ucfirst(strtolower($className)) . "\n"; $this->_data .= "\t* @return object " . ZendModelCreator::getNamespace() . "\\Entity\\" . ucfirst(strtolower($className)) . "\n"; $this->_data .= "\t**/\n"; $this->_data .= "\tpublic function persist(" . ucfirst(strtolower($className)) . " \$" . strtolower($className) . ")\n"; $this->_data .= "\t{\n"; $this->_data .= "\t\tif (\$" . strtolower($className) . "->get" . ZendModelCreator::toCamelCase($this->_primary_key) . "() > 0) {\n"; $this->_data .= "\t\t\t\$where = new Where;\n"; $this->_data .= "\t\t\t\$where->equalTo('" . $this->_primary_key . "', \$" . strtolower($className) . "->get" . ZendModelCreator::toCamelCase($this->_primary_key) . "());\n"; $this->_data .= "\t\t\t\$this->update(\$" . strtolower($className) . ", \$where, '" . strtolower($className) . "');\n"; $this->_data .= "\t\t} else {\n"; $this->_data .= "\t\t\t\$result = \$this->insert(\$" . strtolower($className) . ", '" . strtolower($className) . "');\n"; $this->_data .= "\t\t\t\$" . strtolower($className) . "->set" . ZendModelCreator::toCamelCase($this->_primary_key) . "(\$result->getGeneratedValue());\n"; $this->_data .= "\t\t}\n"; $this->_data .= "\t\treturn \$" . strtolower($className) . ";\n"; $this->_data .= "\t}\n\n"; }
/** * Generates header for Mapper class * */ private function _generateClassHeader($className) { $this->_data .= "<?php\n/**\n* file: " . ucfirst(strtolower($className)) . "Event.php\n* " . ucfirst(strtolower($className)) . " Event\n*\n* @author " . ZendModelCreator::getGenerator() . "\n* @version " . ZendModelCreator::getVersion() . "\n* @package " . ZendModelCreator::getNamespace() . "\n* @since " . date("Y-m-d") . "\n*/\n\nnamespace " . ZendModelCreator::getNamespace() . "\\Service;\n\nuse ArrayObject;\n\nuse " . ZendModelCreator::getNamespace() . "\\Entity\\" . $className . " as " . $className . "Entity;\n\nuse Zend\\EventManager\\Event;\n\n/**\n* " . ucfirst(strtolower($className)) . "Event\n*\n* @author " . ZendModelCreator::getGenerator() . "\n* @version " . ZendModelCreator::getVersion() . "\n* @package " . ZendModelCreator::getNamespace() . "\n* @since " . date("Y-m-d") . "\n*\n**/\nclass " . ucfirst(strtolower($className)) . " extends Event\n{\n"; }