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);