首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 設計模式:資料存取物件 (DAO) 模式 實作範例

     編輯:PHP 綜合知識

模式定義

DAO (Data Access Object) 將資料存取邏輯封裝在獨立類別中,業務邏輯層僅依賴 DAO 介面,不直接操作資料庫,實現關注點分離。

程式碼實作

<?php
/** 基礎 DAO:封裝通用 CRUD */
class BaseDAO {
    protected $_db = null;
    protected $_table = null;

    public function __construct($config) {
        // 實際專案應注入 PDO 或資料庫抽象層實例
        $this->_db = new MysqlDB(); 
    }

    public function fetch(array $filter = [], $field = '*', $page = 1, $limit = null) {
        // 假設 $this->_db 提供鏈式查詢介面
        return $this->_db->select($field)
                         ->from($this->_table)
                         ->where($filter)
                         ->limit($page, $limit)
                         ->execute();
    }

    public function update() { /* ... */ }
    public function delete() { /* ... */ }
    public function insert() { /* ... */ }
}

/** 具體 DAO:對應特定資料表 */
class MemberDAO extends BaseDAO {
    protected $_table = 'member';
}

/* 使用範例 */
$oMember = new MemberDAO();
$members = $oMember->fetch(['status' => 1], 'id,username', 1, 20);

應用於 MVC 架構

  • Model 層基類:繼承 BaseDAO,自動獲得 CRUD 能力。
  • Repository 模式:現代框架常以 Repository 取代 DAO,增加查詢物件、規格模式等進階功能。

優點

  • 資料庫操作集中管理,易於維護、測試與替換底層實作(如換用 PostgreSQL)。
  • 業務邏輯不含 SQL,程式碼更乾淨、可讀性高。
  • 支援單元測試:可 Mock DAO 介面測試 Service 層。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved