5

OOP の観点から、php で DAO (データ アクセス オブジェクト) を作成する適切な方法は何ですか?

たとえば (基本的な例として Account を使用)、私の AccountDAO には次の関数のいくつかがあります。

  • GetAllAccounts
  • GetAccountByID
  • UpdateAccount
  • DeleteAccount
  • InsertAccount

では、データベース内のすべてのアカウントを取得したら、それらをアカウント オブジェクトの配列として呼び出し元に返す必要がありますか? mysql の結果セットを返すだけでよいですか?

DAO の良い例を知っていますか?

4

2 に答える 2

1

あなたは DAO を構築するための正しい道を進んでいます。あなたが挙げたメソッドは間違いなく DAO の一部であるべきです。

特定の質問に答えるために、DAOはデータベース固有のオブジェクトをリークしてはなりません.データベースベンダーに固有のものではない限り、データベースの概念をリークする可能性があります.

いいえ、MySQL の結果セットを返すべきではありません。ただし、MySQL の結果セットをラップし、より高いレベルの概念 (列を抽出する代わりにオブジェクト全体を抽出する) で機能する汎用的な結果セットを作成することもできます。

編集:私の意図は、実際に結果セットラッパーを構築するように導くことではありません。最初に提案したように、単にオブジェクトの配列を返すこともできます。これはほんの一例です。

于 2012-06-15T19:06:11.550 に答える
-1

このために、3つのメソッドを含むクラスを作成できます。1つはデータベースへの接続を作成し、2つ目は接続を閉じ、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();

?>

これがあなたに役立つことを願っています

于 2012-06-15T18:57:00.727 に答える