Kolego jak zabierasz sie do pisania klas to rob to porzadnie. Wzorzec singleton ma wygladac jak singleton, a nie surówka kodu. No i zawsze pisz tak, zeby kod był skalowalny. Następnym razem, gdy bedziesz pisal jakis projekt, wystarczyc bedzie, ze skopiujesz sobie plik, a on dalej bedzie śmigał:
<?php
private $host, $user, $pass, $db;
private $handle, $dbhandle;
/**
* Prywatny konstruktor
*/
private function __construct() {}
/**
* Destruktor, np zamykanie polaczenia
*/
public function __destruct()
{
}
/**
* Jak przystało na Singleton
* metoda getInstance()
*/
public static function getInstance
() {
if (empty(self::$instance)) self::$instance = new mySQL();
return self::$instance;
}
/**
* łączenie z bazą danych
*
* @throws Exception
*/
public function connect()
{
$this->handle = @mysql_connect($this->host, $this->user, $this->pass);
{
throw
new Exception
('Blad mysql (' . mysql_error() . ')'); }
}
/**
* Parsowanie pliku konfiguracyjnego.
*
* @throws Exception
*/
public function parse_config($file)
{
{
throw new Exception('Blad czytania pliku konfiguracyjnego.');
return;
}
$this->host = $array[MySQL][hostname
]; $this->user = $array[MySQL][username
]; $this->pass = $array[MySQL][password
]; $this->db = $array[MySQL][database
]; }
}
?>
dzieki takiemu kodowi, w kazdej aplikacji masz bezposrednią kontrolę nad działaniem klasy, obsługą błędów, itp:
<?php
$sql = mySQL::getInstance();
try {
$sql->parse_config('config.ini');
}
catch (Exception $e) {
// obsługa błędu w razie
// błędnej konfiguracji
}
try {
$sql->connect();
}
catch (Exception $e) {
// obsługa błędu
// w razie błędu połączenia
}
// dalsze działanie skryptu
// mozesz dalej rozszerzyc tą klasę o metody wywoływania zapytań
// sql, filtrowanie danych.. mozliwosci są nieskończone, a zabawa wspaniała
?>
powodzenia