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