मैं ओओपी स्टाइल PHP के लिए बहुत नया हूं, और मैं पीडीओ को भी लागू करने की कोशिश कर रहा हूं। मुझे यह अच्छी छोटी कक्षा ऑनलाइन मिली जो डेटाबेस कनेक्शन को संभालती है, हालांकि मुझे नहीं पता कि इसे किसी अन्य वर्ग से कैसे पहुंचाया जाए। यहाँ कोड है:PHP और पीडीओ कक्षा प्रश्न
class PDO_DBConnect {
static $db ;
private $dbh ;
private function PDO_DBConnect() {
$db_type = 'mysql'; //ex) mysql, postgresql, oracle
$db_name = 'postGal';
$user = 'user' ;
$password = 'pass' ;
$host = 'localhost' ;
try {
$dsn = "$db_type:host=$host;dbname=$db_name";
$this->dbh = new PDO ($dsn, $user, $password);
$this->dbh->setAttribute(PDO::ATTR_PERSISTENT, true);
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "\n" ;
die() ;
}
}
public static function getInstance () {
if (! isset (PDO_DBConnect::$db)) {
PDO_DBConnect::$db = new PDO_DBConnect () ;
}
return PDO_DBConnect::$db->dbh;
}
}
$db_handle = PDO_DBConnect::getInstance();
class Person
{
function __construct()
{
$STMT = $db_handle->prepare("SELECT title FROM posts WHERE id = ? AND author = ? LIMIT 20");
$STMT->execute(array('24', 'Michael'));
while ($result = $STMT->fetchObject())
{
echo $result->title;
echo "<br />";
}
}
}
मैं अपने व्यक्ति वर्ग के अंदर $db_handle
चर में पहुँच प्राप्त कर सकते हैं? क्या मुझे व्यक्ति वर्ग के अंदर परिवर्तनीय को तुरंत चालू करना है? यदि हां, तो क्या इसका मतलब है कि मुझे हमेशा इसे $this->db_handle
के रूप में कॉल करना होगा? मैं उससे बचने की उम्मीद कर रहा था। (मैं अभी भी केवल वर्गों के साथ चर गुंजाइश की एक बहुत ही बुनियादी समझ है)
आप PHP5 ओओ संरचनाओं का उपयोग क्यों कर रहे हैं, लेकिन PHP4-era समान-नाम-के-श्रेणी के कन्स्ट्रक्टर का उपयोग कर रहे हैं? कृपया इसके बजाय '__construct' पर स्विच करने पर विचार करें। – Charles
मुझे नहीं लगता कि उन्होंने पीडीओ_DBC कनेक्ट क्लास लिखा था, क्योंकि उन्होंने उल्लेख किया था कि उन्होंने "इसे पाया"। – Problematic