在PHP中创建DAO的正确方法
从OOP的角度来看,在php中创建DAO(数据访问对象)的正确方法是什么 例如(使用Account作为基本示例),my AccountDAO将具有以下一些功能:在PHP中创建DAO的正确方法,php,mysql,dao,Php,Mysql,Dao,从OOP的角度来看,在php中创建DAO(数据访问对象)的正确方法是什么 例如(使用Account作为基本示例),my AccountDAO将具有以下一些功能: GetAllAccounts GetAccountByID UpdateAccount deleteCount InsertAccount 因此,一旦我获取了数据库中的所有帐户,我是否应该将它们作为帐户对象数组返回给调用者?我应该只返回mysql结果集吗 你知道刀的好例子吗 为此,您可以创建一个包含3个方法的类:一个用于创建到数据库
GetAllAccounts
GetAccountByID
UpdateAccount
deleteCount
InsertAccount
你知道刀的好例子吗 为此,您可以创建一个包含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结果集,并且可以处理更高级别的概念(提取整个对象而不是提取列)
编辑:我的目的不是引导您实际构建一个结果集包装器,您也可以简单地返回一个像您最初建议的那样的对象数组。这只是一个示例。您不仅不应该使用
mysql*
扩展,而且您的示例不允许在不显式更改代码的情况下更改连接详细信息。我认为OP是在寻找DAO(用于访问数据库中的一个特定表),而不是数据库类。非常感谢,我在ASP世界中做过一些这类工作,但到目前为止,我所有的PHP脚本都是基本的过程脚本。我正在尝试将我的php应用程序转换为oop php应用程序。“在DAO中,您不应该返回MySQL结果集。但您可以创建一个通用结果集。”这不是存储库作业吗?返回泛型对象的步骤