1. 程式人生 > >PHP設計模式之資料訪問物件模式(DAO)瞭解下

PHP設計模式之資料訪問物件模式(DAO)瞭解下

這個資料訪問物件模式主要就是描述瞭如何建立透明訪問資料來源的物件,這種設計模式對於同時學過PHP和MySQL的人來說,是一個全新的和令人興奮的概念,並且這種設計模式的目的就是為了解決重複與資料來源抽象化這兩種特定的問題。

我們可以先建立一個數據訪問物件設計模式的物件,這個資料訪問物件封裝了建立sQL呼叫、減少例項建立的複雜性和重複以及更新程序的智慧方式,並且,這個資料訪問物件的使用者不會知道實際使用的表結構和資料庫引擎,此外,這個物件應用的方法應當使用邏輯引數,並且應處理SQL語句的建立工作。

資料訪問物件模式的額外優點是提供資料庫抽象層,現在,應用程式的主要處理程式碼不再需要考慮資料庫引擎或表關係,呼叫這種物件的公共方法會返回任何資料型別,並且不用考慮內在SQL需要的型別。

然而,管理資料訪問物件類中簡單性的一個好辦法是建立父-子關係。

首先,建立一個基本的父物件。這個物件應當負責資料庫連線、抽象地執行查詢以及與子物件通訊。使用資料訪問物件設計模式時,最好開始就將一對一關係的子類與資料庫中的表相關聯。

並且,這些子類具有必不可少的資訊,如表名和主鍵。此外,子類可能包含一些特定的公共方法,這些方法通過只對子類有意義的方式執行父類的查詢。

例如,名為userAddress的子類可能包含一個getAddreddesByZip()方法。將該方法放入父DAO類是毫無邏輯意義的,並且會破壞這個父類希望實現的抽象性。

處理引用特定資料庫資訊的實體時,最好的做法是建立一個數據訪問物件。

瞭解了上述內容之後,我們就來看下網上所有文章都會有的案例,場景如下:

  1. 設計一個BaseDao基類,實現資料庫操作基本的一些query,insert,update方法
  2. 在實際使用的過程中,繼承BaseDao,就可以直接呼叫基類的資料庫操作方法

程式碼如下:

BaseDao.php
<?php
//資料訪問物件模式
 
//將資料庫訪問層脫離出來 作為公用的訪問介面,方便使用者開放,是php中常用的一種設計模式
 
class BaseDao {
	private $db;
	
	public function __construct($config) { 
		$this->db = mysql_connect($config['user'], $config['pass'], $config['host']);
		mysql_select_db($config['database'], $this->db);
	}
	
	public function query($sql) {
		return mysql_query($sql, $this->db);
	}
}

//UserDao 使用者資料表的資料操作,繼承BaseDao
<?php
include("UserDao.php");
class UserDao extends BaseDao {
	public function addUser() {
		$sql = "INSERT INTO user (username) VALUES ('initphp')";
		return $this->query($sql);
	}
}
 
$UserDao = new UserDao;
$UserDao->addUser();

好啦,本次記錄就到這裡了。

如果感覺不錯的話,請多多點贊支援哦。。。