Effettivamente, essendo private, la construct non viene mai eseguita. Me ne rendo conto adesso
Certo che viene 'eseguita', una sola volta. Ma nel tuo codice mancava il metodo statico per 'eseguire' il codice del __construct. Confronta il tuo codice con quello dell'articolo che citi di html.it e vedrai.


Come dicevo sopra:
- avere proprietà 'globali', per snellire il codice e non dover stare a passare sempre istanze o altro (per la classe Configurazione o quella MySQL)
- avere metodi 'globali', raggiungibili da dovunque.
- mantenere una sola istanza delle classi, in modo da fare riferimento (x es.) sempre alla stessa Configurazione

In pratica il fine è l'ottenimento di 'librerie' piuttosto che 'oggetti'.
L'utilizzo che vorresti é perfetto.
Ad esempio potresti salvare tutta la configurazione del tuo sito in un file .ini o xml o quello che vuoi e accedervi in questo modo

Codice PHP:
class Settings {
    
    private static 
$instance;
    private 
$settings;
   
    private function 
__construct() {

        
$ini_file "settings.ini";
        
$this->settings parse_ini_file($ini_filetrue);

    }
   
    public static function 
getInstance() {
        if(! isset(
self::$instance)) {
            
self::$instance = new Settings();           
        }

        return 
self::$instance;
    }
   
    public function 
__get($setting) {
        if(
array_key_exists($setting$this->settings)) {
            return 
$this->settings[$setting];
        } else {
            foreach(
$this->settings as $section) {
                if(
array_key_exists($setting$section)) {
                    return 
$section[$setting];
                }
            }
        }
    }
    

E richiamare ogni variabile di configurazione in questo modo:

Codice PHP:
$config Settings::getInstance();

var_dump($config); //ecco il risultato 
Il file settings.ini sará qualcosa tipo

[environment]
root = /var/path/to/

[mysql]
host = localhost
user = user

etc.