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;
}
}
?>ammettiamo di dover fareCodice PHP:
<?php
class IniConfig extends Singleton {
public function prova() {
return "testo di prova";
}
}
?>
$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?