我抽象類數據庫是數據庫交互和這個類的任何孩子發(UserDatabase,ActionDatabase,EventDatabase)繼承其定義爲靜態其數據庫連接 。繼承數據庫連接
abstract class Database {
public static $connection;
public function __construct() {
...
$this->connection = mysql_connect($host, $username, $password);
}
}
class UserDatabase extends Database {
public function verify() {
if ($this->connection == parent::$connection) {
print "true";
} else {
print "false";
print "this:" . $this->connection . " parent:" . parent::$connection;
}
}
}
$instance = new UserDatabase();
$instance->verify();
// this prints false, as parent::$connection is empty
意思,我的數據庫連接僅設置和存儲在內存中一次並傳遞到子類中作爲參考而不被複製爲每個實例?
這是你如何實現你的OOP正確的數據庫接口?
你是絕對正確的,我是想說明類儘可能短的目的,但我想我的PHP語法讓我失望。 My ** User **實例是** UserDatabase **返回的內容。用戶類只是系統在處理腳本時可能需要的值的setter/getter類。 當腳本完成時,它將User對象傳遞給當前的UserDatabase,因此它可以剝離User到值,然後將更新查詢發送到數據庫服務器。 因此,類的數據庫繼承鏈與它返回的類型是分開的。 ActionDatabase返回並接受Action的一個實例。 – sdkfasldf 2010-05-13 18:47:27