Ciao, avrei bisogno di un aiuto/suggerimento da parte vostra riguardo ad un piccolo esercizio che sto provando a fare con PHP OOP.
Ho creato una basilare classe per la connessione al db con MYSQLi.
Ora vorrei creare un classe Users che utilizzi i metodi della classe connessione per eseguire i propi metodi che necessitano di connessione al db. Da quello che ho capito l'estensione della classe Mysqlconn sarebbe una forzatura in quanto la classe Users non ha relazioni "è di tipo" con la classe connessione quindi vorrei utilizzare l'aggregazione (ditemi se sbaglio).
mysqlconn.php
codice:
class Mysqliconn {
public $mysqli; // connessione e risorsa mysqli
public function __construct(){
// parametri
$host = 'localhost';
$user = 'root';
$password = '';
$database = 'autoricambi';
$charset = 'utf8';
// connessione
$this->connect($host, $user, $password, $database, $charset);
}
public function __destruct(){
$this->disconnect();
}
// Metodo per la connessione
public function connect($host, $user, $password, $database, $charset, $port = null, $socket = null){
$this->mysqli = new mysqli($host, $user, $password, $database, $port, $socket);
if(mysqli_connect_error()){
exit('Impossibile connettersi al DataBase'.$mysqli_connect_error);
} else {
$this->mysqli->set_charset($charset);
}
return true;
}
// Metodo per la disconnessione
public function disconnect(){
$this->mysqli->close();
return true;
}
}
estensione classe
codice:
require_once 'mysqliconn.php';
class Users extends Mysqliconn {
public function seluser(){
$this->result = $this->mysqli->query("SELECT * FROM users");
while($row = $this->result->fetch_assoc()) {
echo $row['password'] . "
";
}
return $row;
}
}
$obj = new Users();
$obj->seluser();
Aggregazione
codice:
require_once 'mysqliconn.php';
class Users {
private $db;
public function __construct( Mysqliconn $db ) {
// aggrego il database alla classe
$this->db = $db;
}
public function seluser() {
$this->db->result = $this->db->mysqli->query("SELECT * FROM users");
while($row = $this->db->result->fetch_assoc()) {
echo $row['password'] . "
";
}
return $row;
}
}
$db = new Mysqliconn();
$dv = new Users( $db );
$dv->seluser();
A questo punto vi chiedo se il mio ragionamento (aggregazione classe) è corretto e se il codice che ho scritto necessità di una "pulizia/correzione" in quanto sto imparando e sicuramente avro' fatto qualche cosa di inutile od omesso qualche cosa.
Grazie
Ciao