模板模式
模板設計模式建立了一個實施一組方法的抽象對象,子類通常將這個對象作為模板用於自己的設計。
設計情境
一般會用於資料庫抽象類別。
代碼設計:
[php]
if (!defined('IS_INITPHP')) exit('Access Denied!');
/*********************************************************************************
* InitPHP 2.0 國產PHP開發架構 Dao-dbbase Driver DB基類
*-------------------------------------------------------------------------------
* 著作權: CopyRight By initphp.com
* 您可以自由使用該源碼,但是在使用過程中,請保留作者資訊。尊重他人勞動成果就是尊重自己
*-------------------------------------------------------------------------------
* $Author:zhuli
* $Dtime:2011-10-09
***********************************************************************************/
abstract class dbbaseInit{
/**
* 抽象資料庫連結
* @param string $host sql伺服器
* @param string $user 資料庫使用者名稱
* @param string $password 資料庫登入密碼
* @param string $database 資料庫
* @param string $charset 編碼
* @param string $pconnect 是否持久連結
*/
abstract protected function connect($host, $user, $password, $database, $charset = 'utf8', $pconnect = 0);
/**
* 抽象資料庫執行語句
* @param string $sql SQL語句
* @return obj
*/
abstract protected function query($sql);
/**
* 抽象資料庫-結果集中的行數
* @param $result 結果集
* @return array
*/
abstract protected function result($result, $num=1);
/**
* 抽象資料庫-從結果集中取得一行作為關聯陣列
* @param $result 結果集
* @return array
*/
abstract protected function fetch_assoc($result);
/**
* 抽象資料庫-從結果集中取得列資訊並作為對象返回
* @param $result 結果集
* @return array
*/
abstract protected function fetch_fields($result);
/**
* 抽象資料庫-前一次操作影響的記錄數
* @return int
*/
abstract protected function affected_rows();
/**
* 抽象資料庫-結果集中的行數
* @param $result 結果集
* @return int
*/
abstract protected function num_rows($result);
/**
* 抽象資料庫-結果集中的欄位數量
* @param $result 結果集
* @return int
*/
abstract protected function num_fields($result);
/**
* 抽象資料庫-擷取上一INSERT的ID值
* @return Int
*/
abstract protected function insert_id();
/**
* 抽象資料庫-釋放結果記憶體
* @param obj $result 需要釋放的對象
*/
abstract protected function free_result($result);
/**
* 抽象資料庫連結關閉
* @param string $sql SQL語句
* @return obj
*/
abstract protected function close();
/**
* 錯誤資訊
* @return string
*/
abstract protected function error();
}
if (!defined('IS_INITPHP')) exit('Access Denied!');
/*********************************************************************************
* InitPHP 2.0 國產PHP開發架構 Dao-mysqli 基類
*-------------------------------------------------------------------------------
* 著作權: CopyRight By initphp.com
* 您可以自由使用該源碼,但是在使用過程中,請保留作者資訊。尊重他人勞動成果就是尊重自己
*-------------------------------------------------------------------------------
* $Author:zhuli
* $Dtime:2011-10-09
***********************************************************************************/
class mysqliInit extends dbbaseInit{
public $link_id; //連結化物件
/**
* MYSQL連接器
* @param string $host sql伺服器
* @param string $user 資料庫使用者名稱
* @param string $password 資料庫登入密碼
* @param string $database 資料庫
* @param string $charset 編碼
* @param string $pconnect 是否持久連結
* @return obj
*/
public function connect($host, $user, $password, $database, $charset = 'utf8', $pconnect = 0) {
$link_id = ($pconnect == 0) ? mysqli_connect($host, $user, $password) : mysqli_pconnect($host, $user, $password);
if (!$link_id) InitPHP::initError('mysql connect error!');
mysqli_query($link_id, 'SET NAMES ' . $charset);
if (!mysqli_select_db($link_id, $database)) InitPHP::initError('database is not exist!');
return $link_id;
}
/**
* SQL執行器
* @param string $sql SQL語句
* @return obj
*/
public function query($sql) {
return mysqli_query($this->link_id, $sql);
}
/**
* 結果集中的行數
* @param $result 結果集
* @return array
*/
public function result($result, $num=1) {
return mysqli_result($result, $num);
}
/**
* 從結果集中取得一行作為關聯陣列
* @param $result 結果集
* @return array
*/
public function fetch_assoc($result) {
return mysqli_fetch_assoc($result);
}
/**
* 從結果集中取得列資訊並作為對象返回
* @param $result 結果集
* @return array
*/
public function fetch_fields($result) {
return mysqli_fetch_field($result);
}
/**
* 結果集中的行數
* @param $result 結果集
* @return int
*/
public function num_rows($result) {
return mysqli_num_rows($result);
}
/**
* 結果集中的欄位數量
* @param $result 結果集
* @return int
*/
public function num_fields($result) {
return mysqli_num_fields($result);
}
/**
* 釋放結果記憶體
* @param obj $result 需要釋放的對象
*/
public function free_result($result) {
return mysqli_free_result($result);
}
/**
* 擷取上一INSERT的ID值
* @return Int
*/
public function insert_id() {
return mysqli_insert_id($this->link_id);
}
/**
* 前一次操作影響的記錄數
* @return int
*/
public function affected_rows() {
return mysqli_affected_rows($this->link_id);
}
/**
* 關閉串連
* @return bool
*/
public function close() {
if ($this->link_id !== NULL) @mysqli_close($this->link_id);
$this->link_id = NULL;
return true;
}
/**
* 錯誤資訊
* @return string
*/
public function error() {
return mysqli_error($this->link_id);
}
}
作者:initphp
http://www.bkjia.com/PHPjc/478081.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/478081.htmlTechArticle模板模式 模板設計模式建立了一個實施一組方法的抽象對象,子類通常將這個對象作為模板用於自己的設計。 設計情境 一般會用於資料庫...