程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP設計模式系列 - 模板模式

PHP設計模式系列 - 模板模式

編輯:關於PHP編程

模板模式
模板設計模式創建了一個實施一組方法的抽象對象,子類通常將這個對象作為模板用於自己的設計。
 
設計場景
一般會用於數據庫抽象類。
代碼設計:
[php] 
<?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(); 

 
 
<?php 
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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved