Bene dopo tante letture ho iniziato a mettermi a lavoro in proprio, sperimentando la programmazione ad oggetti. Prendendo spunto da un tutrial di cui ho letto soltanto il titolo e l'interfaccia, ho deciso di crearmi un'interfaccia per la gestione del collegamento al database, e la cosa belle e' che seguendo questa interfaccia potrei usare gli stessi metodi con i diversi database.
Allora la struttura dell'interfaccia sara':
interface database
{
public function connect($var1, $var2, $var3, $var4); public function error();
public function errno();
public static function escape_string($string);
public function query($query);
public function fetch_array($result);
public function fetch_row($result);
public function fetch_assoc($result);
public function fetch_object($result);
public function num_rows($result);
public function close();
}
E di seguito leggerete la classe che utilizza questa interfaccia:
include_once("database.interface.php");
class MySQL implements database
{
//Creo una variabile protetta che mi consenta di tener traccia della connessione
public $link;
//e adesso una variabile che mi consenta di mantenere i risultati della connessione per operarci successivamente
public $result;
//Creo il costruttore
public function __construct()
{
$this->link = '';
$this->result = '';
}
//La funzione o meglio il metodo che ci consentira' di connettersi ad un database
public function connect($dbHost, $dbUser, $dbPsw, $dbName)
{
//Immagazzino il link della connessione a questa variabile
$this->link = mysql_connect($dbHost, $dbUser, $dbPsw);
//Effetto il controllo per vedere se e' stata avviata la connessione in modo corretto
if (!$this->link)
throw new Exception("Connessione al database non riuscita: ".mysql_error()."<br />");
$this->result = mysql_select_db($dbName, $link);
if(!$this->result)
throw new Excempion("Selezione del database non riuscita: ".mysql_error()." <br />");
}
public function error()
{
//Qui terro' i messaggi di errore da vedere poi come implementarla...
}
public function errno()
{
//Il valore numerico dell'errore
}
public static function escape_string($string)
{
//Controllo i caratteri speciali nella stringa inserita
}
public function query($query)
{
//Invio la query al database
}
public function fetch_array($result)
{
//Scorro il risultato come un array
}
public function fetch_row($result)
{
//Ritiro la riga del risultato
}
public function fetch_assoc($result)
{
//Il risultato sara' considerato come un array associativo
}
public function fetch_object($result)
{
//Il risultato sara' considerato come un oggetto
}
public function num_rows($result)
{
//Controllo il numero di righe
}
public function close()
{
//Chiudo la connessione al database
}
}
Okay adesso che ho descritto la situazzione passo a mostrarvi l'utilizzo semplice semplice per la classe che ho da poco creato...
include_once("mysql.class.php");
include_once("conf.inc.php");
try
{
$connessione = new MySQL($dbHost, $dbUser, $dbPsw, $dbName);
}
catch (Exception $e)
{
echo "Eccezione: ".$e->getMessage();
}
Ora che vi ho portato per manina vi spiego il mio dubbio, leggendo sul sito la parte inerente alle interfaccie viene detto che per le classi che implementano l'interfaccia devono avere dei metodi che accettano almeno il numero di parametri accettati dal metodo definito dall'interfaccia. Questo, a quanto l'ho capita io vuol dire che se ci sono un numero maggiore di parametri rispetto al metodo definito nell'interfaccia non si dovrebbe incorrere in alcun errore...
Invece a me succede questo:
Fatal error: Declaration of MySQL::connect() must be compatible with that of database::connect() in /Volumes/Pr0v4/htdocs/progetto_mio/mysql.class.php on line 4
Vi ringrazio in anticipo per l'aiuto che certamente mi darete!!