मैंने आपकी कक्षा को काम करने के लिए संशोधित किया जैसा कि आप इसकी अपेक्षा कर रहे हैं:
<?php
class Database
{
var $conn = null;
var $config = array(
'username' => 'someuser',
'password' => 'somepassword',
'hostname' => 'some_remote_host',
'database' => 'a_database'
);
function __construct() {
$this->connect();
}
function connect() {
if (is_null($this->conn)) {
$db = $this->config;
$this->conn = mysql_connect($db['hostname'], $db['username'], $db['password']);
if(!$this->conn) {
die("Cannot connect to database server");
}
if(!mysql_select_db($db['database'])) {
die("Cannot select database");
}
}
return $this->conn;
}
}
उपयोग:
$db = new Database();
$conn = $db->connect();
ध्यान दें कि आप जितनी बार चाहें कनेक्ट() को कॉल कर सकते हैं और यह वर्तमान कनेक्शन का उपयोग करेगा, या यदि यह अस्तित्व में नहीं है तो एक बना देगा। यह एक अच्छी बात है ।
साथ ही, ध्यान दें कि हर बार जब आप तत्काल एक डेटाबेस ऑब्जेक्ट (नए का उपयोग करके) आप डेटाबेस से एक नया कनेक्शन बना रहे होंगे। मेरा सुझाव है कि आप अपने डेटाबेस वर्ग को Singleton के रूप में लागू करने पर विचार करें। या इसे रजिस्ट्री में संग्रहित करना वैश्विक पहुंच के लिए।
आप इसे गंदे तरीके से भी कर सकते हैं और इसे $GLOBALS में डाल सकते हैं।
संपादित करें
मैंने सिंगलटन पैटर्न को लागू करने और PHP5 OOP सम्मेलनों का पालन करने के लिए आपकी कक्षा को संशोधित करने की स्वतंत्रता ली।
<?php
class Database
{
protected static $_instance = null;
protected $_conn = null;
protected $_config = array(
'username' => 'someuser',
'password' => 'somepassword',
'hostname' => 'some_remote_host',
'database' => 'a_database'
);
protected function __construct() {
}
public static function getInstance()
{
if (null === self::$_instance) {
self::$_instance = new self();
}
return self::$_instance;
}
public function getConnection() {
if (is_null($this->_conn)) {
$db = $this->_config;
$this->_conn = mysql_connect($db['hostname'], $db['username'], $db['password']);
if(!$this->_conn) {
die("Cannot connect to database server");
}
if(!mysql_select_db($db['database'])) {
die("Cannot select database");
}
}
return $this->_conn;
}
public function query($query) {
$conn = $this->getConnection();
return mysql_query($query, $conn);
}
}
उपयोग:
$res = Database::getInstance()->query("SELECT * FROM foo;");
या
$db = Database::getInstance();
$db->query("UPDATE foo");
$db->query("DELETE FROM foo");