public function save_table_structure(Database_Table $table)
 {
     $handle = fopen($this->get_name(), 'w');
     /*
      * The fields.
      */
     fwrite($handle, "# The fields\n\n");
     $fields = $table->get_fields();
     foreach ($fields as $field) {
         #print_r($field);
         fwrite($handle, $field->get_name() . '.type=' . $field->get_type() . "\n");
         fwrite($handle, $field->get_name() . '.null=' . ($field->can_be_null() ? 'Yes' : 'No') . "\n");
         if ($field->has_default()) {
             fwrite($handle, $field->get_name() . '.default=' . $field->get_default() . "\n");
         }
         fwrite($handle, "\n");
     }
     /*
      * The keys.
      */
     $keys = $table->get_keys();
     foreach ($keys as $key) {
     }
     fclose($handle);
 }
 public function get_fields()
 {
     $fields = parent::get_fields();
     /*
      * Get the foreign key table names from
      * <code>$this-></code> instead of <code>self::</code>.
      *
      * For an explanation, see
      * http://bugs.php.net/bug.php?id=30934
      *
      * This code seems to be a bit of a muddle.
      * Should <code>get_foreign_key_table_names</code> be
      * a member method?
      * The array returned is the same for all instances
      * of the class, hence I made it static to start with.
      */
     #echo 'get_class($this): ' . get_class($this) . "\n";
     #echo 'get_class(self): ' . get_class(self) . "\n";
     #$foreign_key_field_names = self::get_foreign_key_table_names();
     $foreign_key_field_names = $this->get_foreign_key_table_names();
     #print_r($foreign_key_field_names);
     $database = $this->get_database();
     foreach (array_keys($foreign_key_field_names) as $f_k_f_n) {
         $table = $database->get_table($foreign_key_field_names[$f_k_f_n]);
         #echo '$table->get_name(): ' . $table->get_name() . "\n";
         $foreign_key_table_fields = $table->get_fields();
         foreach ($foreign_key_table_fields as $f_k_t_f) {
             #echo 'gettype($f_k_t_f): ' . gettype($f_k_t_f) . "\n";
             $fields[] = $f_k_t_f;
         }
     }
     foreach ($fields as $field) {
         $field->set_name($field->get_table_name_dot_field_name());
     }
     return $fields;
 }