从OOP的角度来看,在php中创建DAO(数据访问对象)的正确方法是什么?
例如(使用Account作为基本示例),我的AccountDAO将具有以下一些功能:
GetAllAccounts
GetAccountByID
UpdateAccount
DeleteAccount
InsertAccount
因此,一旦我获取了数据库中的所有帐户,我应该将它们作为帐户对象数组返回给调用者吗?我应该只返回mysql结果集吗?
你知道DAO的任何好例子吗?
答案 0 :(得分:0)
您正在构建DAO的正确轨道:您列出的方法绝对应该是DAO的一部分。
要回答您的具体问题,DAO不应泄漏任何特定于数据库的对象,它可能会泄漏某些数据库概念,只要它们不是特定于数据库供应商的。
所以不,你不应该返回MySQL结果集。但是你可以创建一个包含MySQL结果集的通用结果集,它可以用于更高级别的概念(提取整个对象而不是提取列)。
编辑:我的目的不是引导你实际构建一个结果集包装器,你也可以简单地返回一个像你最初建议的对象数组。这只是一个例子。
答案 1 :(得分:-1)
为此,您可以创建一个包含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();
?>
希望这会对你有所帮助