コード例 #1
0
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;
}
コード例 #2
0
 $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();