在 PHP 中创建 DAO 的正确方法


Proper way to create a DAO in PHP

从OOP的角度来看,在php中创建DAO(数据访问对象)的正确方法是什么?

例如(以账户为例),我的账户DAO将具有以下一些功能:

  • 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();
?>

希望这对您有所帮助