在PHP中创建DAO的正确方法

时间:2012-06-15 18:55:27

标签: php mysql dao

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

例如(使用Account作为基本示例),我的AccountDAO将具有以下一些功能:

  • GetAllAccounts
  • GetAccountByID
  • UpdateAccount
  • DeleteAccount
  • InsertAccount

因此,一旦我获取了数据库中的所有帐户,我应该将它们作为帐户对象数组返回给调用者吗?我应该只返回mysql结果集吗?

你知道DAO的任何好例子吗?

2 个答案:

答案 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();

?>

希望这会对你有所帮助