Sto tentando di instanziare un Singleton per aprire la connessione ad un database, ma il file chiamante mi da questo errore:
Alla riga 56 c'è la chiamata alla classe $dbHandle = new db(); la classe è chiamata tramite __autoload() e funziona, infatti la trova.
Ho aperto la classe senza che il database fosse presente sul server e mi aspettavo un errore in tal senso, ma non è così.
Infatti l'errore avviene prima che io chiami la funzione che di fatto tenta di aprire il database.
La classe db è questa:
Codice:
Fatal error: Call to private db::__construct() from invalid context in C:\WLMP\HTDOCS\CMS\index.php on line 56
Ho aperto la classe senza che il database fosse presente sul server e mi aspettavo un errore in tal senso, ma non è così.
Infatti l'errore avviene prima che io chiami la funzione che di fatto tenta di aprire il database.
La classe db è questa:
Codice:
interface idb {
public static function connetti();
} // idb
class db implements idb {
private static $instance = null;
private function __construct() {}
private function __clone() {
throw new Exception('Cannot duplicate a singleton.');
} // __clone()
private function db() {
$dsn = 'mysql:host=localhost;dbname=cms';
$user = 'xxxx';
$password = 'xxxxx';
try {
$dbh = new PDO($dsn, $user, $password);
return $dbh;
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
return false;
}
} // db()
public static function connetti() {
if (!isset(self::$instance)) {
self::$instance = new db();
}
return self::$instance;
} // connetti()
} // fine classe db