PHP之模板模式
我們可能會遇到這種情況,為了實現一些業務邏輯,我們會對同一個物件來回重建進行業務處理
比如說做試卷,老師除了一套試卷,學生們拿到試卷只有兩個地方不一樣,填寫的答案和名字
這樣的話,整體的演算法骨架是一定的,你只需要固定出來一套題就可以,子類去修改其中一兩部
應用情境:資料庫中間層的抽象類
上程式碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
<?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);
}
} ?> |
有點累了,設計模式常用的先學到這裡,後續的以後再說,
願法界眾生,皆得安樂
本文轉自 jackdongting 51CTO部落格,原文連結:http://blog.51cto.com/10725691/1954849
相關文章
- PHP設計模式之模板方法模式PHP設計模式
- 設計模式之【模板方法模式】設計模式
- 設計模式之----Java模板模式設計模式Java
- 設計模式之模板方法模式設計模式
- 設計模式之模板方法設計模式
- Java設計模式之(十三)——模板方法模式Java設計模式
- 13.java設計模式之模板模式Java設計模式
- javascript設計模式 之 8 模板方法模式JavaScript設計模式
- PHP 設計模式之策略模式PHP設計模式
- PHP之單例模式PHP單例模式
- PHP之工廠模式PHP模式
- JAVA設計模式之模板方法Java設計模式
- 折騰Java設計模式之模板方法模式Java設計模式
- Java設計模式之模板方法模式和建造者模式Java設計模式
- PHP 設計模式之狀態模式PHP設計模式
- PHP 設計模式之單例模式PHP設計模式單例
- PHP 設計模式之組合模式PHP設計模式
- php設計模式之註冊模式PHP設計模式
- PHP設計模式之單例模式PHP設計模式單例
- PHP設計模式之工廠模式PHP設計模式
- PHP 設計模式之橋接模式PHP設計模式橋接
- PHP 設計模式之——單例模式PHP設計模式單例
- 23種設計模式之模板方法設計模式
- 設計模式漫談之模板方法設計模式
- PHP 之觀察者模式PHP模式
- PHP 設計模式之責任鏈模式PHP設計模式
- PHP 設計模式之介面卡模式PHP設計模式
- PHP設計模式之觀察者模式PHP設計模式
- PHP 設計模式之觀察者模式PHP設計模式
- PHP設計模式之裝飾者模式PHP設計模式
- PHP 設計模式之——觀察者模式PHP設計模式
- PHP微信開發之模板訊息回覆PHP
- 模板模式模式
- PHP設計模式之裝飾器模式(Decorator)PHP設計模式
- 【php實現設計模式】之單例模式PHP設計模式單例
- 設計模式-模板模式設計模式
- 設計模式——模板模式設計模式
- 從原始碼學習設計模式之模板方法原始碼設計模式
- 設計模式-模板方法模式設計模式