PHP設計模式系列 - 模板模式_PHP教程

來源:互聯網
上載者:User
模板模式
模板設計模式建立了一個實施一組方法的抽象對象,子類通常將這個對象作為模板用於自己的設計。

設計情境
一般會用於資料庫抽象類別。
代碼設計:
[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模板模式 模板設計模式建立了一個實施一組方法的抽象對象,子類通常將這個對象作為模板用於自己的設計。 設計情境 一般會用於資料庫...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.