我對OOP風格的PHP很新,我也試圖實現PDO。我在網上發現了這個可以處理數據庫連接的小班,但是我不知道如何從另一個班級訪問它。下面是代碼:PHP和PDO類問題
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 />";
}
}
}
我怎樣才能得到我的Person類的內部訪問$db_handle
變量?我是否必須實例化Person類中的變量?如果是這樣,這是否意味着我將永遠不得不稱之爲$this->db_handle
?我希望避免這種情況。 (我仍然只有具有可變範圍的帶班一個非常基本的理解)
爲什麼你使用PHP5 OO構造,但PHP4時代的同名類構造函數?請考慮切換到'__construct'。 – Charles 2011-06-09 19:06:40
我不認爲他寫了PDO_DBConnect類,因爲他提到他「找到了」。 – Problematic 2011-06-09 19:11:43