public static function test_get_database_class_returns_database_reflection_class()
 {
     $database_class_factory = Database_DatabaseClassFactory::get_instance();
     $database_class = $database_class_factory->get_database_class();
     $mysql_user_factory = Database_MySQLUserFactory::get_instance();
     $mysql_user = $mysql_user_factory->get_for_this_project();
     $passwords_file = $mysql_user->get_password_file();
     $database_object = $database_class->newInstance($mysql_user, $passwords_file->get_database());
     return is_a($database_object, 'Database_Database');
 }
 public function get_database()
 {
     if (!isset($this->database)) {
         $password_file = $this->get_password_file();
         $database_name = $password_file->get_database();
         $database_class_factory = Database_DatabaseClassFactory::get_instance();
         $database_class = $database_class_factory->get_database_class();
         $this->database = $database_class->newInstance($this, $database_name);
     }
     return $this->database;
 }
 /**
  * This class uses the singleton pattern.
  */
 public static function get_instance()
 {
     if (self::$instance == NULL) {
         self::$instance = new Database_DatabaseClassFactory();
     }
     return self::$instance;
     #if (!isset($_SESSION['database-class-factory'])) {
     #    $_SESSION['database-class-factory']
     #        = new Database_DatabaseClassFactory();
     #}
     #
     #return $_SESSION['database-class-factory'];
 }
 /**
  * What if the row sub class hasn't been
  * implemented yet?
  *
  * This function should just return the Row
  * class in that case.
  */
 public final function get_row_class()
 {
     $table_name = $this->get_name();
     $database_class_factory = Database_DatabaseClassFactory::get_instance();
     $row_class = $database_class_factory->get_row_class($table_name);
     return $row_class;
 }
 /**
  * If a renderer class for this has been implemented
  * and saved in the row subclass renderers directory,
  * then that class will be returned.
  *
  * Otherwise, the default row renderer (which the
  * row subclass renderers should extend anyway)
  * is returned.
  */
 public final function get_renderer()
 {
     #$renderer_class = $this->get_renderer_class();
     #return $renderer_class->newInstance($this);
     $table = $this->get_table();
     $table_name = $table->get_name();
     $database_class_factory = Database_DatabaseClassFactory::get_instance();
     $row_renderer_class = $database_class_factory->get_row_renderer_class($table_name);
     $renderer = $row_renderer_class->newInstance($this);
     return $renderer;
 }