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; }