foreach ($db->query('SHOW TABLES')->fetchAll(PDO::FETCH_COLUMN) as $table) { $name = implode('', array_map(function ($word) { return ucfirst($word); }, explode('_', $table))); $cols = array(); foreach ($db->query("DESCRIBE `{$table}`") as $col) { $cols[$col['Field']] = '@property' . (strtolower($col['Extra']) == 'auto_increment' ? '-read' : NULL) . ' ' . getColType(strtolower($col['Type'])) . (strtolower($col['Null']) == 'yes' ? '|NULL' : NULL) . ' $' . $col['Field'] . "\n"; } $tables[$name] = array($table => $cols); } // Generování tříd, foreach ($tables as $className => $table) { foreach ($table as $name => $cols) { if (!file_exists(REPOSITORY_PATH . $className . '.php')) { //$entity_name = readline($className . ": "); $entity_name = readline_predefined($className . ": ", Inflector::singularize($className)); newEntity($cols, $entity_name); } else { $repository = file_get_contents(REPOSITORY_PATH . $className . '.php'); preg_match('/(?<=@entity \\\\).*/', $repository, $matches); if (!$matches) { continue; } $matches = explode("\\", $matches[0]); $entity_name = end($matches); if (file_exists(ENTITY_PATH . $entity_name . '.php')) { editEntity($cols, $entity_name); } else { newEntity($cols, $entity_name); } }
function generateEntity($className, $cols) { if (!file_exists(REPOSITORY_PATH . $className . '.php')) { $entity_name = readline_predefined(" Entity name for repo '" . $className . "': ", Inflector::singularize($className)); newEntity($cols, $entity_name); drawRow("Entity '{$entity_name}' generated"); } else { $repository = file_get_contents(REPOSITORY_PATH . $className . '.php'); preg_match('/(?<=@entity \\\\).*/', $repository, $matches); if (!$matches) { return null; } $matches = explode("\\", $matches[0]); $entity_name = end($matches); if (file_exists(ENTITY_PATH . $entity_name . '.php')) { editEntity($cols, $entity_name); drawRow("Entity '{$entity_name}' updated"); } else { newEntity($cols, $entity_name); drawRow("Entity '{$entity_name}' generated"); } } return $entity_name; }