91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP 之模板模式

發布時間:2020-07-21 11:35:42 來源:網絡 閱讀:343 作者:jackdongting 欄目:開發技術

我們可能會遇到這種情況,為了實現一些業務邏輯,我們會對同一個對象來回重建進行業務處理


比如說做試卷,老師除了一套試卷,學生們拿到試卷只有兩個地方不一樣,填寫的答案和名字


這樣的話,整體的算法骨架是一定的,你只需要固定出來一套題就可以,子類去修改其中一兩部


應用情境:數據庫中間層的抽象類


上代碼

<?php

//模板設計模式創建了一個實施一組方法的抽象對象,子類通常將這個對象作為模板用于自己的設計。
//一般會用于數據庫抽象類。
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='utf-8',$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();

}

//這是具體的某個數據庫,比如MySQL,oracle
class mysqliInit extends dbbaseInit{
	public $link_id;
	//重寫模型中的連接類
	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) die('mysql connect error!');
		mysql_query($link_id,'set names'.$charset);
		if(!mysqli_select_db($link_id,$database)) die('database is not exist');

		return $link_id;
	}

	public function query($sql){
		return mysqli_query($this->link_id,$sql);
	}

	public function result($result,$num=1){
		return mysqli_result($result,$num);
	}

	public function fetch_assoc($result){
		return mysqli_fetch_assoc($result);
	}

	public function fetch_fields($result){
		return mysqli_num_fields($result);
	}

	public function free_result($result){
		return mysqli_free_result($result);
	}

	public function insert_id(){
		return mysqli_insert_id($this->link_id);
	}

	public function affected_rows() { 
        return mysqli_affected_rows($this->link_id); 
    }

    public function close(){
    	if($this->link_id!==null) $mysqli_close($this->link_id);
    	$this->link_id = null;
    	return true;
    }

    public function error(){
    	return mysqli_error($this->link_id);
    }
}
?>



有點累了,設計模式常用的先學到這里,后續的以后再說,


愿法界眾生,皆得安樂

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沈阳市| 阳西县| 锦屏县| 博客| 澳门| 新泰市| 凭祥市| 灌云县| 秦皇岛市| 若尔盖县| 海晏县| 青州市| 阿克陶县| 余姚市| 墨竹工卡县| 池州市| 锡林郭勒盟| 呼图壁县| 无棣县| 连山| 明水县| 随州市| 新丰县| 电白县| 鄢陵县| 星子县| 汤阴县| 青冈县| 清水河县| 介休市| 锡林郭勒盟| 蚌埠市| 定襄县| 榆社县| 叶城县| 金阳县| 荆门市| 固阳县| 中山市| 旌德县| 永胜县|