Il costruttore è privato perchè deve poter essere istanziato solo dall'interno della classe stessa, è il principio del Design Pattern Singleton:
http://www.html.it/articoli/design-p...p-singleton-1/

Il problema è che per come è stato fatto il codice, manca il riferimento agli attributi della classe nel costruttore, infatti si potrebbe fare in questo modo:

Codice PHP:
private function __construct( ) { 
        
$this->conn self::connect$this->db_host$this->db_user$this->db_pass$this->db_name ); 
    } 
Così facendo da qualsiasi parte dell'applicazione si può richiamare
Codice PHP:
Database::getInstance() 
in tal modo non occorre passare i parametri e solo la prima volta verrà creata la connessione, dalla seconda volta in poi l'attributo $instance sarà valorizzato e quindi non verrà aperta una nuova connessione.

Ovviamente la classe può essere ampliata con altri metodi, esempio eseguiQuery()


Codice PHP:
public function eseguiQuery($sql) { 
       return 
mysql_query($sql,$this->conn);

E' quindi semplice capire che si potrà eseguire una query in questo modo:
Codice PHP:
Database::getInstance()->eseguiQuery("SELECT bla bla bla"
Allo stesso modo si potranno aggiungere metodi per il numero di record selezionati, eliminati, per l'ultimo id inserito e così via.

I personalmente per passare i parametri utilizzo delle costanti, ovvero ho il mio file dove specifico i parametri di connessione sotto forma di costanti, es:
Codice PHP:
define('DB_HOST,"localhost"); 
e nella classe faccio riferimento a queste;
cioè nel getInstance():
Codice PHP:
self::$instance = new $c(DB_HOSTDB_USER...); 
quindi il metodo costruttore torna ad avere i parametri:
Codice PHP:
private function __construct$db_host=''$db_user=''$db_pass=''$db_name='' ) { 
        
$this->conn self::connect$db_host$db_user$db_pass$db_name ); 
    } 
ed ovviamente andranno tolti gli attributi dalla classe perchè non più utilizzati
Codice PHP:
 // Server dove risiede il database 
    
private $db_host "localhost"
     
    
// Username per accedere al database 
    
private $db_user "root"
     
    
// Password per accedere al database 
    
private $db_pass ""
     
    
// Nome del database 
    
private $db_name "miodatabase"