PHP 之模板模式

來源:互聯網
上載者:User

標籤:哦php 模型模式

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


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


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


應用情境:資料庫中介層的抽象類別


上代碼

<?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,oracleclass 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);    }}?>



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


願法界眾生,皆得安樂

本文出自 “一站式解決方案” 部落格,請務必保留此出處http://10725691.blog.51cto.com/10715691/1954849

PHP 之模板模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.