私はいくつかの Web アプリケーションで MVC のかなりまともな表現だと思っていたものを実装しましたが、crackoverflow に参加して以来、おそらく私の最初の定義は少し単純化されていたことがわかりました。 Web アプリケーションのデータ アクセス層とモデルまたはドメイン層。
コンテキストとして、私は現在、オブジェクトが表すテーブル内の単一のレコードに対して CRUD 関数を実装するデータ アクセス オブジェクトと、オブジェクトを返す get() 関数を使用して、条件を満たすすべてのオブジェクトを反復処理できるようにします。 get() 関数の基準。
これらのデータ アクセス オブジェクトは、ビジネス ロジックを含むコントローラー スクリプトから直接参照されます。
問題があれば、私は PHP と MySQL で作業していますが、他の言語でコーディングできる提案に興味があります。
更新:より具体的な例として、電子メール アドレス、アクティブな状態、ユーザー名、パスワード、所属する会社などの情報を保持する user (ここでの規則は単一のテーブル名です) というテーブルがあります。この基本的なオブジェクトはコードでは次のようになります。
class User implements DataAccessObject
{
protected $user_id;
protected $email;
protected $username;
protected $password;
protected $company_id;
protected $active // Bool that holds either a 0 or 1
public function __construct ( $user_id ) // Uses Primary Key to know which record to construct
{
$sql = //Sql to get this information from the database.
// Code necessary to assign member variables their values from the query.
}
public function insert(){}
public function update(){}
public function delete(){}
public static function get($filters, $orderVals, $limit){}
// An object such as user might also contain the following function definition
public static function login($username, $password){}
}
DAO レイヤーとモデル レイヤーを単純化して、実際のタイプの機能 (ユーザーのログインなど) とデータ アクセス機能の両方を組み合わせたように思えます。