Diciamo che più o meno funziona... o perlomeno non funziona come dovrebbe
Codice PHP:
<?php
class Singleton {
    private static 
$instance;

    private function 
__construct() {}

    public function 
getInstance() {
        if(!isset(
self::$instance)) {
            
$object get_class($this);             /* linea 10 */
            
self::$instance = new $object();      /* linea 11 */
        
}
        return 
self::$instance;
    }
}
?>
Codice PHP:
<?php
class IniConfig extends Singleton {
    public function 
prova() {
        return 
"testo di prova";
    }
}
?>
ammettiamo di dover fare

$i = IniConfig::getInstance();
print "<h1>".$i->prova()."</h1>";

mi restituisce l'errore:

Notice: Undefined variable: this in C:\Programmi\EasyPHP 2.0b1\www\Wipy\includes\system\Singleton.php on line 10

Fatal error: Class name must be a valid object or a string in C:\Programmi\EasyPHP 2.0b1\www\Wipy\includes\system\Singleton.php on line 11


se io modificassi la linea 10 mettendo
$object = __CLASS__;

mi restituirebbe l'errore

Fatal error: Call to undefined method Singleton:rova() in C:\Programmi\EasyPHP 2.0b1\www\Wipy\includes\_header.php on line 13

perché in effetti __CLASS__ è la stringa "Singleton" e non "IniConfig" come invece io vorrei che fosse...

se il metodo prova fosse nativo di Singleton allora tutto funzionerebbe... ma naturalmente a me questo non serve.

come risolvo la situazione?