Ciao a tutti,
ho un dilemma che mi perseguita ormai da settimane: è corretto effettuare la connessione al database nel costruttore di una classe, estesa poi da altre classi?
Faccio subito qualche piccolo esempio.
Ho una classe generica DbClass
Ho poi altre classi che ne estendono le funzionalità, ad esempio
Quindi ogni volta che creo un oggetto di una di queste classi, sono automaticamente connesso al database.
E' corretto mettere nel costruttore la connessione al database?
Che problemi posso avere se nello stesso script creo oggetti di classi diverse? Tipo
Dovrei modificare la DbClass in qualche altro modo, modificando/togliendo la connessione nel costruttore?
Grazie.
ho un dilemma che mi perseguita ormai da settimane: è corretto effettuare la connessione al database nel costruttore di una classe, estesa poi da altre classi?
Faccio subito qualche piccolo esempio.
Ho una classe generica DbClass
PHP:
<?php
class DbClass {
protected $host = "XXX";
protected $username = "XXX";
protected $password = "XXX";
protected $dbName = "XXX";
protected $_mysqli;
protected $_query;
public function __construct() {
$this->_mysqli = new mysqli($this->host,$this->username,$this->password,$this->dbName);
if($this->_mysqli->connect_errno) {
echo "Connection failed: ".$this->_mysqli->connect_error;
exit();
}
}
......
public function __destruct() {
$this->_mysqli->close();
}
Ho poi altre classi che ne estendono le funzionalità, ad esempio
PHP:
<?php
require_once "classDB.php";
class User extends DbClass {
private $Uusername;
private $Upassword;
......
PHP:
<?php
require_once "classDB.php";
class AuthUser extends DbClass {
......
Quindi ogni volta che creo un oggetto di una di queste classi, sono automaticamente connesso al database.
E' corretto mettere nel costruttore la connessione al database?
Che problemi posso avere se nello stesso script creo oggetti di classi diverse? Tipo
PHP:
$user = new User;
.....
.....
$auth = new AuthUser;
.....
Dovrei modificare la DbClass in qualche altro modo, modificando/togliendo la connessione nel costruttore?
Grazie.