Ho appena iniziato a utilizzare OOP PHP e mi sono imbattuto in una domanda. Ho creato una classe mysql generica che mi permette di connettersi a un database e ha alcune funzioni per ottenere record da una tabella:PHP OOP: come utilizzare una classe MySQL generica in altre classi
class mysql{
//some lines to connect, followed by:
public function get_record($sql)
{
$result = mysql_result(mysql_query($sql));
return $result;
//obiously it's a bit more advanced, but you get the picture.
}
}
Avanti, ho una classe per ottenere i dettagli dell'utente:
class user{
__construct($id)
{
$this->id = $id
}
public function get_username($id)
{
$username = get_record("SELECT name FROM users WHERE id = '".$this->id."'");
return $username;
}
}
Ho provato questo, ma ho ottenuto l'errore che la funzione get_record era sconosciuta. Ho risolto questo aggiungendo $ mysql = new mysql(); alla classe utente.
Tuttavia, sembra abbastanza inefficiente dover istanziare l'oggetto mysql per ogni classe che utilizza i miei metodi di database (è praticamente tutto).
C'è un modo per rendere la classe mysql ei suoi metodi accessibili a tutte le altre classi, senza dover chiamare la classe mysql in ogni metodo?
Per favore, non creare classi MySQL. Ce ne sono troppi in giro, anche quando PHP ha già incorporato una cosa del genere. Si chiama PDO (PHP Database Objects). La PDO è trasferibile ad altri sviluppatori, mentre dovendo capire la classe MySQL di qualcun altro ancora e ancora si sente piuttosto inutile. – kander