function normalize_as_namespaces_and_classes($tables) { echo PHP_EOL . "normalize_as_namespaces_and_classes" . PHP_EOL; $database = array(); $database['schemas'] = array(); $table_schema = ''; $actual_schema = ''; foreach ($tables as $table) { $table_schema = to_class_name($table['schemaname']); if ($actual_schema !== $table_schema) { $actual_schema = $table_schema; $database['schemas']["{$actual_schema}"]['name'] = $actual_schema; $database['schemas']["{$actual_schema}"]['tables'] = array(); } $class = array(); $class['name'] = to_class_name($table['tablename']); $class['attributes'] = array(); $class['primary_key_columns'] = array(); foreach ($table['attributes_list'] as $attribute_data) { $attribute = array(); $attribute['name'] = to_attribute_name($attribute_data['attname']); $attribute['name_ucfirst'] = ucfirst($attribute['name']); $attribute['name_as_column'] = $attribute_data['attname']; $attribute['is_primary_key'] = $attribute_data['isprimarykey']; $class['attributes'][] = $attribute; $attribute['attribute_data'] = $attribute_data; if (!$attribute['is_primary_key'] == '1') { array_push($class['primary_key_columns'], $attribute_data['attname']); } } $class['first_primary_key_column'] = $class['primary_key_columns'] ? $class['primary_key_columns'][0] : 'xxx'; $class['first_primary_key_attribute_name'] = to_attribute_name($class['first_primary_key_column']); $class['table_data'] = $table; //tolog($class['name']); //tolog($class['primary_key_columns']); $database['schemas']["{$actual_schema}"]['tables'][] = $class; } return $database; }
$handle = fopen($path_tables_file, "w"); $schema_row = ''; $tables = normalize_result_tables($result_tables); get_attributes($tables); write_tables_file($tables); $database = normalize_as_namespaces_and_classes($tables); create_po_directories($database); create_dao_directories($database); create_class_files($database); create_dao_files($database); exit; fwrite($handle, print_r($tables, true)); while ($data = pg_fetch_object($result_tables)) { $namespace_name = ucfirst($data->schemaname); schema_directory_handle($namespace_name); $class_name = to_class_name($data->tablename); $po_file = PATH_OUTPUT_DIRECTORY . "/Po/{$data->schemaname}/{$class_name}.php"; $po_file_handle = fopen($po_file, "w"); $po_file_string = "<?php" . PHP_EOL . PHP_EOL; $po_file_string .= "{$data->tablename}" . PHP_EOL; $po_file_string .= PHP_EOL; $string = "\n=====" . PHP_EOL; $string .= "tabela - {$data->schemaname}.{$data->tablename}\n"; $string .= "=====\n\n"; # `attnum` negativos sao colunas de sistema $query_attributes = sprintf("\n SELECT *\n FROM pg_catalog.pg_attribute\n WHERE attrelid = %d\n AND attnum > 0\n ", $data->tableoid); $result_tables_attributes = pg_query($query_attributes); if ($result_tables_attributes) { $string .= "Atributos:\n"; $string .= "-----\n\n"; $array_attributes_names = array();