I have small Class which handles user's information. (name, surname, login, hash of password). Also this class can activate, register and login the user. This means I should connect to DB. Is it normal? I'm using Pear MDB2 to connect to DB.
Does it mean that every instance of User will have MDB2 object initialised?
class User {
private $login;
private $hash;
private $name;
/* some getters and setters */
//
// public function get_name() { return $this->name }
// ..
//
private $connect; // MDB2 connection
private $dsn = ""; // connection config
public function exists() { // return true if User exists
require ('MDB2.php');
$this->connect = MDB2::connect($this->dsn);
// check
}
}
Should I make $connect and $dsn variables static? Or may be I should use some pattern for this idea?
Update: (kind of decision)
I store database connection in static variable:
class DataBase {
// connections options
static public $connect = NULL; // MDB2 connection variable
static public $dsn = "pgsql://user:pass@IP/database";
static public $connected = false;
static function reportError() {
if (PEAR::isError(self::$connect)) {
$res["success"]=false;
$res["errors"][] = self::$connect->getMessage();
echo json_encode($res);
exit;
}
} //: reportError
} //: Class DataBase
So If I want to connect to DB I write:
// connect only if it's not connected
if (!DataBase::$connected) {
require_once('MDB2.php'); // Pear MDB2 class
DataBase::$connect = MDB2::factory(DataBase::$dsn); // connection
DataBase::$connected = true; // Flag that we're already connected
}
It's normal? Or I should make it another way?