從OOP的角度來看,在PHP中創建DAO(數據訪問對象)的正確方法是什麼?在PHP中創建DAO的正確方法
例如(使用帳戶作爲一個基本的例子),我AccountDAO將有以下的一些功能:
GetAllAccounts
GetAccountByID
UpdateAccount
DeleteAccount
InsertAccount
因此,一旦我獲取數據庫中的所有帳戶,是否應該將它們作爲帳戶對象數組返回給調用方?我應該只返回mysql結果集?
你知道任何一個DAO的好例子嗎?
從OOP的角度來看,在PHP中創建DAO(數據訪問對象)的正確方法是什麼?在PHP中創建DAO的正確方法
例如(使用帳戶作爲一個基本的例子),我AccountDAO將有以下的一些功能:
GetAllAccounts
GetAccountByID
UpdateAccount
DeleteAccount
InsertAccount
因此,一旦我獲取數據庫中的所有帳戶,是否應該將它們作爲帳戶對象數組返回給調用方?我應該只返回mysql結果集?
你知道任何一個DAO的好例子嗎?
爲此,您可以創建包含3種方法之一是創建連接到數據庫中的類,第二個是接近執行SQL查詢
<?php
class Database{
public function con_open(){
$con = mysql_connect("domain","username","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("db_name", $con);
}
public function query($sql){
$result = mysql_query($sql);
if(!$result){
}else{
return $result;
}
}
public function fetch($result){
$row = mysql_fetch_array($result);
return $row;
}
public function con_close(){
mysql_close($con);
}
}
$db = new Database();
?>
希望這將有助於你的連接,第三個
您正在構建DAO的正確方向:您列出的方法絕對應該是DAO的一部分。
要回答您的具體問題,DAO不應該泄漏任何數據庫特定的對象,但只要它們不是特定於數據庫供應商的,它可以泄漏一些數據庫概念。
所以不,你不應該返回一個MySQL結果集。但是你可以創建一個通用的結果集來包裝MySQL結果集,並且可以與更高層次的概念一起工作(提取整個對象而不是提取列)。
編輯:我的目的不是讓你實際構建一個結果集包裝器,你也可以簡單地返回一個像你最初建議的對象數組。這只是一個例子。
非常感謝,我在ASP世界中完成了一些這類工作,但是迄今爲止我所有的PHP腳本都是基本的程序腳本。我試圖把我的PHP應用程序變成oop php應用程序。 – carlg
不僅應該使用'mysql_ *'擴展名,但是您的示例不允許在不明確更改代碼的情況下更改連接詳細信息。 – cspray
我認爲OP正在尋找一個DAO(用於訪問數據庫中的一個特定表),而不是數據庫類。 – AdmiralAdama