內容提要
《PHP開發手冊(典藏版)》(孫鵬程編寫)全面、系統地介紹了PHP實戰開發方方面面的技術。內容由淺入深,從易到難,實例豐富,從PHP的基本知識到高級技術與框架操作,再到項目開發與擴展套用,幾乎涉及PHP開發與套用的所有重要知識。書中的全部實例原始碼都收錄在《PHP開發手冊(典藏版)》的配書光碟中,供讀者實戰演練。
《PHP開發手冊(典藏版)》共分5篇。第1篇介紹PHP的檔案系統、程式調試、異常處理、表單與JavaScript等基礎套用;第2篇介紹PHP與MySQL、PostgreSQL、SQL Server以及Oracle等多種不同資料庫的互動操作方法;第3篇介紹PHP的擴展庫PEAR、adodb、FPDF、GD庫的操作方法,以及目前流行的THINKPHP、Zend Framework、CAKEPHP、symfony等php開發框架;第4篇通過對CMS系統、OA系統、流程管理系統、資源管理系統等系統的介紹,詳細講解PHP在實際開發中的套用;第5篇介紹PHP的網路客戶端、Web Service擴展套用,以及Ajax的基礎知識。
《PHP開發手冊(典藏版)》光碟中的電子書分三篇:第1篇介紹PHP開發環境的搭建、PHP的基本語法與操作;第2篇介紹PHP的面向對象操作及類的開發實例;第3篇介紹PHP伺服器環境的硬體知識與伺服器維護策略。
《PHP開發手冊(典藏版)》無論是對初學PHP應用程式的開發人員,還是對PHP應用程式開發有一定經驗的開發人員,都會有很大的幫助。對於經常使用PHP的程式設計師,《PHP開發手冊(典藏版)》也是一本不可多得的案頭必備參考書。
作者簡介
孫鵬程,從事7年的PHP B/S模式系統的設計和開發,曾經在神州數碼、IBM中國擔任項目經理。具有六百餘萬行代碼經驗,對PHP與企業結合的套用系統設計有深入研究。開發的基於企業管理流程的套用系統廣泛套用於東北電網等大型企業。
目錄
第1章 檔案系統與文本數據操作2
在程式設計中,檔案是一個很重要的對象,web編程也不例外。檔案的操作在很多web系統中一直都是被反覆用到的。在實際套用中經常會遇到對檔案和目錄的創建、修改、刪除等操作。本章將主要介紹如何使用php對檔案系統以及文本數據進行操作。
1.1 php中目錄操作詳解2
1.1.1 打開目錄2
1.1.2 關閉目錄3
1.1.3 讀取目錄中的檔案3
1.1.4 創建目錄3
1.1.5 刪除目錄4
1.2 php中檔案操作詳解4
1.2.1 打開檔案4
1.2.2 關閉檔案5
1.2.3 讀取檔案5
1.2.4 寫入檔案6
1.2.5 刪除檔案6
1.2.6 複製檔案7
1.3 本地檔案的操作實例——小型留言本7
1.3.1 留言發表模組7
1.3.2 瀏覽模組9
.1.4 遠程檔案的操作實例10
1.5 檔案的上傳與下載10
1.5.1 檔案的上傳10
1.5.2 檔案的下載11
1.6 小結12
在php中,對於字元的處理是一個很重要的部分,很多套用中都包含有字元處理的功能,而正則表達式則是有效地處理一些複雜字元操作的便利方式。本章將重點介紹php中的一些常見字元處理操作及正則表達式的套用。
2.1 字元類型的特殊性13
2.2 字元的顯示與格式化14
2.2.1 字元的顯示14
2.2.2 字元的格式化14
2.3 常見的操作15
2.3.1 字元串重複操作——str_repeat15
2.3.2 字元串替換操作——str_replace和str_ireplace16
2.3.3 字元串分解操作——str_split17
2.3.4 字元串單詞數的計算函式——str_word_count18
2.3.5 字元串查找操作——strstr19
2.3.6 獲得字元串長度——strlen19
2.3.7 獲得字元串子串——substr19
2.4 正則表達式簡介20
2.5 正則表達式與字元操作綜合套用20
2.5.1 獲得與模式匹配的數組單元——preg_grep21
2.5.2 進行全局正則表達式匹配——preg_match_all21
2.5.3 進行正則表達式匹配——preg_match23
2.5.4 轉義正則表達式字元——preg_quote24
2.5.5 執行正則表達式的搜尋和替換的函式——preg_replace25
2.5.6 通過回調函式執行正則表達式的搜尋和替換——preg_replace_callback25
2.5.7 用正則表達式進行字元串分割——preg_split26
2.6 字元操作的注意事項27
2.7 小結29
數組是一個由若干同類型變數組成的集合,引用這些變數時可用同一名字。數組中的每一個變數都叫做數組的一個元素。在開發中,數組有廣泛的用途。本章將對數組及一些數組的使用技巧作詳細講解。
3.1 一維數組與多維數組30
3.1.1 一維數組簡介30
3.1.2 多維數組簡介30
3.2 常用的數組操作31
3.2.1 數組的創建與調用31
3.2.2 數組的更新32
3.2.3 數組元素的遍歷33
3.3 數組索引與鍵值的操作技巧34
3.4 數組的排序36
3.4.1 遞增排序——sort36
3.4.2 遞減排序——rsort36
3.4.3 數組排序——array_multisort37
3.5 幾種數組的套用實例38
3.5.1 順序查找38
3.5.2 二分法查找39
3.5.3 使用array_search函式進行查找39
3.5.4 線性表的入棧與出棧40
3.5.5 數組的合併42
3.5.6 數組的拆分43
3.5.7 隨機排序44
3.6 小結45
第4章 php程式調試46
在php的編寫過程中,錯誤是不可避免的,如何有效地調試並修復錯誤是一個程式設計師必備的一種能力。php提供了很好的錯誤提示,並且通過與eclipse工具結合可以很方便地進行程式調試。本章將對php中的錯誤類型和程式調試方法進行詳細講解。
4.1 php中的錯誤類型46
4.1.1 語法錯誤46
4.1.2 語義錯誤47
4.1.3 邏輯錯誤47
4.1.4 注釋錯誤47
4.1.5 運行時錯誤48
4.2 php程式調試策略48
4.2.1 php的錯誤級別48
4.2.2 打開php的錯誤報告49
4.2.3 使用print進行程式調試50
4.3 使用phpeclipse進行php程式調試51
4.3.1 使用eclipse編寫php程式的好處51
4.3.2 phPECLipse的安裝與啟動51
4.3.3 phpeclipse的使用52
4.3.4 phpeclipse的語法錯誤強調功能53
4.3.5 phpeclipse的調試界面54
4.3.6 使用phpeclipse調試php代碼的常見問題57
4.4 錯誤的處理58
4.4.1 錯誤的隱藏58
4.4.2 錯誤信息的定製59
4.4.3 逾時錯誤的處理60
4.5 小結61
第5章 php中的異常處理62
上一章介紹了如何調試php中的錯誤,這些錯誤通常是在實際編程中因為程式設計師的失誤或者設計錯誤造成的。在實際運行過程中,往往還可能存在一些環境錯誤。例如,檔案無法找到或者資料庫無法打開等。這些環境錯誤當然可以通過if語句的判斷來識別。但是,php還提供了一種更好的異常處理方法,可以有效地解決因為環境錯誤帶來的異常。本章將主要介紹php中的異常處理方法。
5.1 異常處理的原理62
5.2 php中的異常處理62
5.2.1 異常類exception63
5.2.2 異常拋出關鍵字throw64
5.2.3 異常捕獲語句try-catch65
5.2.4 異常處理函式設定set_exception_handler66
5.2.5 完整的異常信息67
5.3 擴展的異常處理類68
5.4 異常的傳遞與重擲71
5.5 小結73
第6章 php與表單74
在web應用程式的開發中,通常使用表單來實現程式與用戶輸入的互動。用戶通過在表單上輸入數據,將一些信息傳輸給網站的程式以進行相應的處理。當用戶在web頁面中的表單內填寫好信息以後,可以通過單擊按鈕或連結來實現數據的提交。本章將主要介紹php中表單的套用,php程式通過接收用戶在表單中輸入的信息實現與用戶的互動。
6.1 html表單簡介74
6.1.1 表單標籤form74
6.1.2 輸入標籤input與文本框75
6.1.3 按鈕76
6.1.4 單選框與複選框77
6.1.5 多行文本域標籤textarea78
6.1.6 下拉框與列表框標籤select79
6.2 表單數據的接收79
6.2.1 get方法80
6.2.2 post方法82
6.3 常用表單數據的驗證方法83
6.3.1 姓名驗證83
6.3.2 日期驗證84
6.3.3 e-mail地址驗證84
6.3.4 密碼欄位的驗證84
6.3.5 改進的用戶信息輸入程式85
6.4 URL編碼解碼函式87
6.4.1 編碼字元串——urlencode87
6.4.2 解碼字元串——urldecode87
6.5 小結88
前面幾章介紹了如何使用php語言來實現一些基本操作。php是一種後台語言,在執行時會將php程式的運行結果以靜態html的形式返回給客戶端。也就是說,在客戶端並不能看見php代碼。本章將要介紹一種流行的在客戶端執行的前台程式語言——javascript。在實際套用中,往往會結合套用後台語言和前台語言以實現一些需要的功能。
7.1 javascript簡介89
7.2 javascript的數據類型89
7.3 JavaScript程式設計基礎90
7.3.1 在html中嵌入javascript90
7.3.2 變數91
7.3.3 注釋91
7.3.4 函式的定義與調用92
7.3.5 條件語句92
7.3.6 循環語句95
7.3.7 對象97
7.3.8 事件98
7.4 php動態生成javascript代碼99
7.4.1 多行輸出99
7.4.2 單行輸出99
7.4.3 php動態生成javascript實例——進度條100
7.5 javascript中調用php程式101
7.5.1 頁面的跳轉101
7.5.2 隱性調用php程式102
7.6 javascript和php綜合實例——表單驗證102
7.6.1 表單設計103
7.6.2 javascript代碼設計104
7.6.3 php代碼設計105
7.6.4 代碼的運行106
7.7 小結107
第2篇 php與資料庫
第8章 關係型資料庫的基礎知識110
在第一篇中,介紹了php的各種基本套用。從本章開始,將介紹php與資料庫的結合使用。本章將主要介紹一些關係型資料庫的基礎知識。
8.1 關係型資料庫與關係型資料庫系統的介紹110
8.2 關係型資料庫系統的結構與運行過程111
8.2.1 關係型資料庫系統的層次結構111
8.2.2 關係型資料庫系統的運行過程111
8.3 常用關係型資料庫的介紹112
8.3.1 mysql112
8.3.2 oracle112
8.3.3 sybase113
8.3.4 db2113
8.3.5 sql server113
8.4 sql語言簡介113
8.5 常見資料庫設計問題114
8.6 關係型資料庫的設計原則114
8.6.1 第一範式(1NF)115
8.6.2 第二範式(2NF)115
8.6.3 第三範式(3NF)116
8.7 資料庫設計的方法與步驟116
8.7.1 需求分析117
8.7.2 概念設計的e-r方法121
8.7.3 資料庫邏輯設計方法121
8.7.4 物理設計階段124
8.7.5 資料庫實施階段124
8.7.6 資料庫運行和維護階段124
8.8 小結124
第9章 mysql的安裝與操作125
上一章對資料庫管理系統的基本特點作了一些簡要介紹,並且介紹了常見的幾款關係型資料庫系統,mysql就是其中之一。在與php的套用中,mysql是最常用到的一款。本章將主要介紹如何安裝和配置mysql資料庫伺服器,並對mysql資料庫伺服器的一些常見操作加以介紹。
9.1 mysql資料庫伺服器介紹125
9.2 安裝與配置125
9.2.1 下載mysql125
9.2.2 mysql的安裝126
9.2.3 mysql的配置127
9.2.4 mysql的啟動與關閉129
9.3 資料庫與表的創建129
9.3.1 登錄與退出MySql命令行管理模式130
9.3.2 mysql的資料庫操作130
9.3.3 表的創建132
9.4 數據類型的介紹134
9.5 索引與唯一值的介紹135
9.6 數據的操作136
9.6.1 表的修改136
9.6.2 表的刪除137
9.6.3 數據的查詢137
9.6.4 數據的插入142
9.6.5 數據的更新143
9.6.6 數據的刪除144
9.7 小結144
第10章 mysql與php的套用145
上一章介紹了如何通過mysql命令行對mysql資料庫進行操作。在php中,使用mysql擴展來實現對mysql資料庫的操作。其基本操作方法與在命令行上進行操作大致相同,只是操作命令都是寫到php腳本中來完成的。本章將介紹如何使用php對資料庫操作,並具體介紹php與mysql的結合使用。
10.1 php結合資料庫套用的優勢145
10.2 web資料庫的工作原理145
10.3 使用php操作mysql資料庫146
10.3.1 資料庫伺服器的連線與斷開146
10.3.2 選擇資料庫147
10.3.3 執行sql語句147
10.3.4 獲得查詢結果集中的記錄數149
10.3.5 獲得結果集中的某一條記錄149
10.3.6 逐行獲取結果集中的每一條記錄150
10.3.7 結果集的分頁152
10.3.8 用戶動態添加記錄153
10.3.9 用戶動態更新記錄155
10.3.10 用戶動態刪除記錄157
10.4 使用php獲取mysql資料庫的信息158
10.4.1 獲取資料庫的信息159
10.4.2 獲取表的信息159
10.4.3 獲取列的數目160
10.4.4 獲取列的名稱160
10.4.5 獲取列的數據類型160
10.4.6 獲取列的長度161
10.4.7 獲取列的標誌161
10.4.8 一個完整的查看錶中各列屬性的實例162
10.5 常見問題與解決方案162
10.6 小結164
第11章 資料庫中的程式邏輯165
上一章介紹了使用php對mysql資料庫進行存取,在一般性的套用中,使用php直接對資料庫進行存取的方法套用非常廣泛。有時候,一些基本的資料庫套用可能會被反覆用到。如果使用php反覆執行這一相同操作,不僅麻煩而且會影響代碼的運行效率。
因此,在某些時候,對於一些小型並且頻繁使用的資料庫操作,可以將其交給資料庫來完成。本章將以mysql資料庫為例,介紹如何在資料庫中實現這些程式邏輯。
11.1 資料庫程式邏輯與php程式邏輯的分體設計原則165
11.2 資料庫程式邏輯與數據的關係165
11.3 存儲過程的設計166
11.3.1 定界符重定義166
11.3.2 存儲過程的創建與調用167
11.3.3 存儲過程的參數168
11.3.4 複合語句170
11.3.5 變數170
11.3.6 條件語句172
11.3.7 循環語句173
11.3.8 游標175
11.3.9 存儲過程的刪除177
11.4 觸發器的設計177
11.4.1 觸發器的創建與觸發177
11.4.2 觸發器的刪除178
11.5 php與存儲過程、觸發器178
11.5.1 php調用存儲過程178
11.5.2 php調用觸發器179
11.6 小結180
第12章 session與cookie181
在資料庫套用中,難免會涉及用戶登錄功能的編寫。在一些系統中,往往也需要識別用戶的身份。因此,session與cookie是web套用特別是資料庫套用中不可或缺的兩個要素。正是由於session和cookie的存在才使頁面間信息的安全傳遞成為可能。本章將結合資料庫的使用實例來介紹php中session和cookie的套用。
12.1 session與cookie簡介181
12.2 php中session的實現181
12.2.1 標識開始使用session182
12.2.2 session預定義數組182
12.2.3 session的檢測與註銷182
12.2.4 php中session處理的定製183
12.3 session套用實例——登錄驗證187
12.3.1 資料庫設計187
12.3.2 html表單的設計187
12.3.3 驗證頁面的編寫188
12.3.4 歡迎頁面的編寫189
12.3.5 註銷頁面的編寫189
12.3.6 代碼的運行189
12.3.7 代碼的改進190
12.4 php中cookie的實現191
12.4.1 cookie語法格式191
12.4.2 cookie預定義數組191
12.4.3 創建一個cookie191
12.4.4 創建一個有時間限制的cookie192
12.4.5 創建一個有範圍限制的cookie192
12.4.6 刪除cookie193
12.4.7 瀏覽器重定向193
12.4.8 cookie的常見問題193
12.5 cookie套用實例——登錄驗證194
12.5.1 html表單的設計194
12.5.2 驗證頁面的編寫194
12.5.3 歡迎頁面的編寫195
12.5.4 註銷頁面的編寫196
12.5.5 代碼的運行196
12.6 cookie與session的比較197
12.7 小結197
在前面幾章中,介紹了mysql與php結合使用的方法,以及如何在php中使用session和cookie。本章將從一個php留言本的整體設計入手,詳細介紹在實際套用中如何使用php結合mysql開發基於web的應用程式。
13.1 留言本實例的系統分析198
13.1.1 系統簡介198
13.1.2 系統模型設計198
13.1.3 資料庫設計199
13.1.4 公共功能設計200
13.2 使用mysql與php創建一個留言本200
13.2.1 查看留言功能201
13.2.2 發表留言功能203
13.2.3 管理員身份驗證功能205
13.2.4 管理首頁設計206
13.2.5 留言回復功能208
13.2.6 留言刪除功能209
13.2.7 留言回復刪除功能210
13.2.8 留言審批功能210
13.2.9 退出管理員登錄功能211
13.3 小結211
第14章 postgresql與php的套用212
前面幾章對mysql資料庫系統與php的套用作了一些詳細介紹。本章將向讀者介紹另外一種常與php結合使用的資料庫系統postgresql。通過學習本章,讀者將不僅掌握一些postgresql的常用操作方法,也將對如何使用php操作postgresql有一個初步的了解。
14.1 postgresql簡介212
14.2 postgresql的安裝212
14.2.1 postgresql的下載212
14.2.2 postgresql的安裝步驟213
14.2.3 postgresql服務的啟動與停止214
14.3 postgresql的基本操作214
14.3.1 pgAdmin iii的啟動214
14.3.2 伺服器的連線214
14.3.3 創建一個新資料庫215
14.3.4 創建一個表215
14.3.5 對表中數據的操作217
14.3.6 sql語句的執行217
14.4 使用php存取postgresql資料庫218
14.4.1 使用php的postgresql擴展218
14.4.2 資料庫的連線與關閉218
14.4.3 執行sql語句219
14.4.4 獲得查詢結果集中的記錄數220
14.4.5 逐行獲取結果集中的每一條記錄221
14.4.6 數據的插入、更新和刪除222
14.4.7 執行動態sql語句225
14.4.8 information_schema227
14.5 小結228
前面兩章對php與mysql和postgresql資料庫伺服器的連線進行了簡單介紹。在實際套用中,由於mysql和postgresql的大型數據處理能力比較差,因而往往使用較大型的資料庫系統進行部署。sql server就是微軟推出的一款適合較大型系統使用的資料庫伺服器軟體。本章將對sql server與php的套用進行介紹。
15.1 sql server簡介229
15.2 sql server的安裝230
15.2.1 sql server的安裝步驟230
15.2.2 sql server management studio231
15.3 sql server的基本操作232
15.3.1 創建一個資料庫232
15.3.2 創建一個表232
15.3.3 對表中數據的操作233
15.3.4 sql語句的執行233
15.4 使用php存取sql server資料庫234
15.4.1 使用php的mssql擴展234
15.4.2 資料庫的連線與關閉234
15.4.3 執行sql語句235
15.4.4 獲得查詢結果集中的記錄數236
15.4.5 逐行獲取結果集中的每一條記錄237
15.5 小結239
第16章 oracle與php的套用240
上一章介紹了sql server與php的套用。與sql server類似,oracle是甲骨文公司推出的一款大型資料庫管理系統。在實際套用中,oracle具有更高的數據處理和管理能力。因此,oracle受到了很多大型企業的青睞。本章將介紹oracle的基本操作以及與php的套用。
16.1 oracle簡介240
16.2 oracle的安裝241
16.2.1 oracle的安裝過程241
16.2.2 oracle application express241
16.3 oracle的基本操作242
16.3.1 創建一個表242
16.3.2 對表中數據的操作244
16.3.3 sql語句的執行244
16.4 使用php存取oracle資料庫245
16.4.1 使用php的oci8擴展245
16.4.2 資料庫的連線與關閉246
16.4.3 執行sql語句246
16.4.4 逐行獲取結果集中的每一條記錄247
16.5 小結248
目前市場上流行的資料庫有很多種,雖然這些資料庫在開發時遵循同樣的一個標準,但是,每種資料庫都有一些與其他同類產品不一樣的地方。本章將主要介紹不同種資料庫間的差異,並對php與不同資料庫的操作上的差異作一些介紹。
17.1 sql語言標準以及常見關係型資料庫的sql擴展249
17.1.1 ansi sql語言標準249
17.1.2 mysql對ansi sql的擴充250
17.1.3 sql server的t-sql251
17.1.4 oracle的pl/sql252
17.2 php資料庫套用的差異253
17.2.1 mysql與php的套用253
17.2.2 postgresql與php的套用253
17.2.3 sql server與php的套用254
17.2.4 oracle與php的套用255
17.2.5 sqlite與php的套用255
17.2.6 access與php的套用256
17.2.7 odbc與php的套用256
17.3 小結258
第3篇 php的高級套用
第18章 pear、pecl的套用260
本書前面的章節介紹了php的基本使用以及與資料庫結合的實例。通過對前面的學習,讀者應該能夠使用php設計並實現一些常見的功能了。很多時候,並不需要自己逐行完成套用中的所有代碼,因為很多常見的功能可能早已被人開發出來了。如果能夠有效地利用這些資源,就能在實際開發中達到事半功倍的效果。本章將介紹的pear與pecl就是這樣的資源庫。
18.1 pear與pecl的介紹260
18.2 pear類庫組件的安裝260
18.3 pear類庫的安裝與使用264
18.3.1 查看已安裝pear包264
18.3.2 查看pear包的詳細信息264
18.3.3 安裝一個pear包265
18.3.4 pear包的升級266
18.3.5 pear包的使用266
18.4 常用的pear類庫實例266
18.4.1 使用db類庫進行資料庫查詢267
18.4.2 使用auth_http類庫進行身份校驗269
18.4.3 使用html_template_it類庫進行模板替換271
18.5 pecl擴展庫的安裝與使用272
18.6 pecl擴展庫套用實例——zip擴展272
18.6.1 zip擴展的安裝273
18.6.2 一個zip擴展套用實例273
18.7 小結274
第19章 adodb類庫套用275
本書第2篇介紹了php與mysql等幾種常用資料庫的結合使用。php提供了多種資料庫訪問組件來訪問不同類型的資料庫。php的這種機制為php程式設計師製造了很多麻煩,為了訪問不同種類的資料庫,不得不記住多種多樣的資料庫存取函式。而本章將要介紹的adodb類庫則有效地解決了這個問題。adodb類庫通過對不同資料庫的差異封裝,可使php套用可以輕鬆地在不同的資料庫之間進行切換。
19.1 adodb介紹275
19.1.1 adodb的優勢275
19.1.2 adodb的適用場合276
19.2 adodb類庫的安裝與配置276
19.2.1 adodb的下載與安裝276
19.2.2 adodb的第一個測試程式276
19.3 adodb的常用資料庫操作278
19.3.1 連線資料庫278
19.3.2 數據的插入、更新和刪除281
19.3.3 數據查詢281
19.3.4 記錄分頁的實現283
19.3.5 多個資料庫的連線方法285
19.4 adodb的程式調試286
19.5 小結288
pdf文檔格式是當前流行的電子文檔與電子表格的一種標準格式。pdf提供了完善的壓縮處理,無論創建者創建的pdf文檔使用了什麼字型,使用了什麼樣的圖片或者版式設計,瀏覽者都可以通過免費的adobe reader對其進行閱讀。本章將要介紹的是一個可以用php創建pdf文檔的類庫fpdf。
20.1 fpdf簡介289
20.2 fpdf的安裝與配置289
20.3 fpdf創建pdf文檔289
20.3.1 fpdf創建hello world290
20.3.2 在pdf中插入圖片291
20.3.3 頁眉與頁腳292
20.3.4 繪製表格293
20.4 為fpdf增加中文支持295
20.5 fpdf的實際套用296
20.5.1 為文章系統創建pdf頁面297
20.5.2 動態生成企業產品名錄299
20.6 小結300
第21章 php的快取與靜態化套用301
前面已經介紹了許多php套用的例子,這些例子無一例外是通過訪問php腳本檔案來完成的。用戶每次在瀏覽器端的訪問都是對php腳本的執行過程,程式根據用戶的需要返回信息。對於一些大型系統,訪問量往往很大,頻繁的動態操作與資料庫操作大大加重了伺服器的負擔。
在這種情況下,通常使用快取技術或者靜態化操作。也就是將php腳本的頁面結果放到快取中,或者放到靜態html檔案中。這樣,訪問者在訪問頁面時,不必重新執行動態php代碼即可獲得結果,可大大緩解伺服器的負擔。本章將介紹快取機制與靜態化的原理,以及使用php實現靜態化的方法。
21.1 為什麼要靜態化301
21.2 大型套用的快取機制與靜態化304
21.2.1 快取機制304
21.2.2 靜態化機制305
21.3 php如何實現靜態化305
21.3.1 根據模板生成靜態頁面305
21.3.2 資料庫與靜態頁的關係306
21.3.3 靜態頁內容的修改308
21.3.4 模板的替換309
21.3.5 靜態頁上的動態操作310
21.3.6 靜態頁面檔案的目錄311
21.4 小結314
第22章 php與xml格式操作315
xml是一種流行的半結構化檔案格式,以一種類似資料庫的格式存儲數據。在實際套用中,一些簡單的、安全性較低的數據往往使用xml檔案的格式進行存儲。這樣做一方面可以通過減少與資料庫的互動性操作提高讀取效率,另一方面可以有效利用xml的優越性降低程式的編寫難度。
php提供了一整套的讀取xml檔案的方法,很容易就可以編寫基於xml的腳本程式。本章將介紹php與xml的操作方法,並對幾個常用的xml類庫作一些簡要介紹。
22.1 xml簡介315
22.2 簡單的xml操作316
22.2.1 創建一個simplexml對象316
22.2.2 讀取simplexml對象中的xml數據318
22.2.3 xml數據的修改322
22.2.4 標準化xml數據322
22.2.5 xml數據的存儲322
22.3 xml文檔的動態創建323
22.3.1 dom簡介324
22.3.2 dom文檔的創建與使用324
22.3.3 dom元素的操作327
22.3.4 dom節點的操作329
22.3.5 dom組件操作實例329
22.4 xslt的使用330
22.4.1 xslt簡介331
22.4.2 使用php與xslt生成html頁面332
22.5 xml套用實例一——留言本333
22.5.1 xml檔案結構設計333
22.5.2 提交頁面的編寫334
22.5.3 顯示頁面的編寫335
22.6 xml套用實例二——為網站生成rss頁面336
22.6.1 什麼是rss336
22.6.2 rss頁面的編寫338
22.7 小結339
第23章 smarty類庫340
前面的章節介紹了很多在html頁面中內嵌php代碼的例子。隨著web技術的不斷發展,很多web程式設計師已經不再滿足於這種在html頁面中內嵌php代碼的方法。因為這樣做的一個很大弊端是為後期維護帶來了很多麻煩,程式設計師不得不修改php代碼來迎合頁面設計的改動。
本章要介紹的smarty類庫有效地解決了這一問題。smarty類庫通過建立模板庫來存放靜態html頁面中的html代碼,並使用php代碼對其中的元素進行賦值。這樣,當頁面的設計發生變化時,只需要修改模板頁面就可以了。
23.1 smarty簡介340
23.2 smarty的安裝與配置341
23.2.1 smarty的安裝341
23.2.2 smarty的配置341
23.3 smarty程式設計342
23.3.1 簡單的smarty程式設計342
23.3.2 模板對象屬性的定義343
23.3.3 smarty程式編寫的一般步驟344
23.4 smarty模板設計344
23.4.1 模板中的變數344
23.4.2 變數的修飾345
23.4.3 區域循環方法346
23.4.4 模板中的條件判斷348
23.4.5 外部檔案的載入350
23.5 smarty的實際套用——多模板網站351
23.5.1 模板的設計351
23.5.2 頁面實現352
23.6 小結353
第24章 thinkphp框架354
上一章介紹了使用smarty類庫進行套用系統開發。smarty使用模板構架有效地分離了代碼與頁面,當頁面發生變化的時候,程式設計師並不需要修改代碼。本章將要介紹另外一種基於模板的開發框架——thinkphp框架。
thinkphp框架是近兩年剛剛發展起來的一個php套用開發框架。該框架借鑑了很多優秀框架的經驗和模式,使用最通用的mvc構架和面向對象理念,是一款可以實現網站快速開發的優秀的輕量級框架。
24.1 thinkphp的安裝與項目創建354
24.1.1 thinkphp的獲取與安裝354
24.1.2 項目入口檔案354
24.1.3 項目的創建355
24.2 項目的配置355
24.3 控制器類的創建356
24.3.1 控制器的模組與操作356
24.3.2 url的處理358
24.4 模型類的創建358
24.4.1 模型的定義與實例化359
24.4.2 資料庫的連線與操作360
24.5 模板檔案的編寫362
24.5.1 模板中的變數362
24.5.2 模板中函式的使用363
24.5.3 幾種基本標籤的使用364
24.6 thinkphp套用實例——線上日程表366
24.6.1 資料庫的設計366
24.6.2 模板的設計367
24.6.3 控制器的實現368
24.7 小結369
隨著web技術的發展,傳統的編程模式已經越來越不能滿足日益快速的技術發展。近些年來,一些致力於整合功能的框架技術蓬勃發展起來。上一章介紹的thinkphp框架是一個可以滿足基本需要的輕量級框架。而由zend公司構建的框架zend framework則更適合大型系統的開發。本章將簡要介紹zend framework的使用方法。
25.1 zend framework的安裝與項目創建370
25.2 dispatcher與bootstrap372
25.3 控制器程式的編寫372
25.3.1 首頁控制器程式的編寫373
25.3.2 其他頁面控制器程式的編寫374
25.4 視圖檔案的調用376
25.4.1 默認視圖檔案的使用376
25.4.2 模板檔案的調用376
25.5 數據模型的生成377
25.5.1 資料庫的連線377
25.5.2 數據模型的創建378
25.5.3 數據模型的使用379
25.6 用戶表單的處理380
25.6.1 用戶表單的生成380
25.6.2 表單數據的驗證與過濾382
25.7 zend framework套用實例——留言本384
25.8 小結388
第26章 cakephp框架389
cakephp是近兩年來新生的一款開源的php框架。該框架的設計理念來自ruby的rails框架,使php程式設計師可以比較迅速地創建web應用程式。cakephp框架使用了mvc體系結構,同時兼容php 4和php 5,並且擁有很靈活的數據模型與許可權管理機制。因此,近年來cakephp受到了越來越多php程式設計師的關注與青睞。cakephp的最新版本為1.3.0,本章將以該版本為例簡要介紹cakephp的使用方法。
26.1 cakephp的安裝與配置389
26.2 scaffolding簡介391
26.3 cakephp的數據模型392
26.3.1 數據模型的定義392
26.3.2 數據的查詢393
26.3.3 數據的保存395
26.3.4 數據的刪除397
26.3.5 對象的關聯398
26.4 控制器的編寫400
26.4.1 控制器的基本使用400
26.4.2 控制器的屬性與方法401
26.5 視圖的調用404
26.5.1 視圖的布局404
26.5.2 視圖的元素405
26.5.3 視圖的快取405
26.6 acl許可權控制406
26.6.1 什麼是acl406
26.6.2 使用配置檔案定義許可權407
26.6.3 使用資料庫定義許可權408
26.7 cakephp套用實例——員工工資單409
26.7.1 登錄框與許可權控制409
26.7.2 工資單頁面的編寫410
26.8 小結412
第27章 symfony框架413
前面幾章介紹了幾種常見的php開發框架。本章將繼續介紹另一種近幾年流行起來的新的開發框架symfony。symfony框架也是一款基於mvc架構的框架,並且使用到了一些其他php開源項目的部分代碼以增強其功能。因此,近年來symfony受到了越來越多大型項目的青睞。symfony框架的最新版本為1.4.3,本章將以該版本為例簡要介紹symfony的使用方法。
27.1 symfony的安裝413
27.2 開始一個新項目414
27.3 symfony的數據模型416
27.3.1 schema的編寫416
27.3.2 數據模型初始化420
27.4 控制器與視圖421
27.4.1 項目的基本構架421
27.4.2 視圖的布局422
27.4.3 控制器與模板424
27.5 管理生成器426
27.5.1 管理後台的生成427
27.5.2 管理後台的配置427
27.6 symfony套用實例——個人部落格430
27.7 小結433
第28章 php與圖像操作434
php不僅可以用來生成html頁面,還可以用來創建和操作二進制檔案,例如圖片。使用php程式動態生成圖片可以實現生成縮略圖、驗證碼等多種功能,在實際套用中很常用。在php中,通常使用gd庫來實現對圖像的操作。本章將介紹如何使用gd庫來操作圖像檔案。
28.1 php圖像函式館簡介434
28.2 gd庫的配置434
28.3 一個簡單圖像創建程式436
28.4 gd庫的套用實例437
28.4.1 使用gd庫創建圖片縮略圖437
28.4.2 使用gd庫生成驗證碼439
28.4.3 使用gd庫下載遠程圖片441
28.4.4 使用gd庫為頁面增加水印441
28.5 小結442
上一章介紹了如何使用gd庫來創建圖像。使用gd庫提供的各種函式可以生成多種圖像,但是,如果需要在php中創建一些統計圖,使用gd庫就顯得很麻煩了。本章將要介紹一種專門用於輸出統計圖的jpgraph庫。該庫在數據統計等方面有很大優勢。在實際套用中,可以很容易使用jpgraph生成大方得體的統計圖。
29.1 jpgraph簡介443
29.2 jpgraph的安裝與配置443
29.2.1 jpgraph的安裝443
29.2.2 jpgraph的配置444
29.3 jpgraph繪製統計圖實例444
29.3.1 簡單的x-y坐標圖444
29.3.2 改進的x-y坐標圖447
29.3.3 柱形圖450
29.3.4 餅圖451
29.3.5 3d餅圖452
29.4 jpgraph套用實例——工廠銷量查詢系統453
29.5 小結457
第30章 php訪問ldap伺服器458
ldap的全稱是“輕量級目錄訪問協定(lightweight directory access protocol)”,是一種簡單的目錄協定。所謂目錄,是一種專門的資料庫,可以服務於任何應用程式。在企業套用中使用ldap可以讓企業範圍內的所有應用程式從LDAP目錄中獲取信息,使應用程式可以通過網路直接從ldap目錄獲取信息,而不再局限於作業系統與伺服器的類型。本章將主要介紹如何使用php來訪問ldap。
30.1 ldap簡介458
30.2 ldap伺服器的安裝與配置459
30.2.1 openldap的安裝459
30.2.2 openldap的配置460
30.2.3 openldap的啟動與關閉461
30.2.4 openldap的數據操作462
30.2.5 phpldapadmin簡介463
30.3 php中ldap擴展的配置464
30.4 php與ldap的相關操作464
30.4.1 連線ldap伺服器464
30.4.2 綁定ldap伺服器465
30.4.3 斷開ldap伺服器465
30.4.4 查詢ldap目錄內容465
30.4.5 獲得查詢結果中的值467
30.4.6 計算查詢結果中的記錄數468
30.4.7 向ldap添加一條新記錄469
30.4.8 更新ldap中的一條記錄469
30.4.9 從ldap中刪除一條新記錄470
30.4.10 錯誤處理470
30.5 使用ldap驗證用戶身份471
30.6 小結472
在實際套用中,通常需要使用郵件系統來與網站的訪問者交流。例如,一個網站的新註冊用戶可以通過郵件來獲取註冊確認信息,也可以通過郵件來找回密碼等。因此,在一些常見的網站系統中,往往包含郵件傳送的功能。本章將介紹如何使用php來傳送郵件。
31.1 php郵件傳送功能配置473
31.1.1 php中的smtp功能配置473
31.1.2 建立自己的smtp伺服器474
31.2 php中的mail函式476
31.2.1 簡單的郵件傳送方法476
31.2.2 傳送html格式文本477
31.2.3 傳送帶附屬檔案的郵件477
31.3 一個簡單的郵件傳送類479
31.3.1 郵件傳送類的創建479
31.3.2 郵件傳送系統的實現481
31.4 小結483
第32章 php最佳化器與加速器484
php代碼在運行時是通過編譯器首先編譯成中間代碼,然後再被伺服器運行得到用戶所需要的結果。因此,中間代碼的優劣直接決定了代碼的最終運行速度。目前,有一些常見的php加速器可以通過對中間代碼進行最佳化來提高php代碼的運行速度。這樣,網站的訪問者就可以更快地打開網頁。
本章將介紹幾款常見的php加速器,讀者可以根據實際情況選擇其中的一款安裝,從而有效地提高php的運行效率。
32.1 最佳化器Zend Optimizer484
32.1.1 zend optimizer的安裝484
32.1.2 zend optimizer的配置486
32.2 加速器php accelerator487
32.2.1 php accelerator的安裝487
32.2.2 php accelerator的配置488
32.3 開源的最佳化器turck mmcache488
32.3.1 turck mmcache的安裝489
32.3.2 turck mmcache的配置489
32.4 開源的加速器eaccelerator490
32.5 小結490
第4篇 php與實際項目
第33章 用php構建內容管理系統cms492
cms是“內容管理系統(content management system)”的縮寫,任何基於內容的網站系統都可以稱為cms。例如,文章管理、圖片管理以及綜合網站管理程式都是cms的典型實現。一般的cms系統都是基於模板設計,網站開發人員可以通過簡單地修改模板的設計快速實現網站所需功能。本章將以一個簡單的文章管理程式為例,說明如何開發一個cms系統。
33.1 了解cms需求492
33.2 資料庫設計492
33.3 關鍵技術的實現495
33.3.1 資料庫連線公用代碼496
33.3.2 網站開關的設計496
33.3.3 模板更換機制496
33.3.4 html編碼轉換497
33.4 頁面代碼設計497
33.4.1 首頁的實現497
33.4.2 註冊頁面的實現501
33.4.3 分類文章列表頁面與文章顯示頁面的實現503
33.4.4 投稿頁面與添加新文章頁面的實現507
33.4.5 文章管理頁面的實現509
33.4.6 文章類別維護頁面的實現513
33.4.7 網站參數配置頁面的實現518
33.4.8 網站模板管理頁面的實現521
33.4.9 退出登錄頁面的實現524
33.5 小結525
網際網路時代是一個信息爆炸的時代,面對著信息高速膨脹的網際網路,怎樣快捷有效地得到自己所需要的信息成為了一個關鍵的課題。於是,各種各樣的搜尋引擎在網際網路上誕生了出來,例如,google、yahoo和百度等,都是流行的搜尋引擎。這些搜尋引擎已經逐漸成為人們生活不可或缺的一部分。
本章將要介紹如何使用php來進行信息搜尋,以及調用這些現有的搜尋引擎進行搜尋。
34.1 php對資料庫數據的搜尋526
34.1.1 資料庫創建526
34.1.2 搜尋頁面的設計527
34.1.3 內容顯示頁面的設計528
34.1.4 系統集成的調度策略529
34.2 php對文本檔案的搜尋530
34.3 php對現有搜尋引擎的調用531
34.4 小結533
oa是辦公自動化(office automation)的縮寫。oa系統是基於internet或intranet的概念、以企業工作流為基礎構建的辦公自動化系統。oa系統能夠有效地對企業信息進行管理,並且在企業內部共享信息。oa系統的存在改變了過去複雜低效的辦公模式,使辦公管理和決策變得更加簡單。本章將以一個簡單的oa系統為例來介紹如何使用php開發oa系統。
35.1 了解企業oa系統的需求534
35.2 資料庫設計535
35.3 關鍵技術的實現536
35.3.1 根據登錄用戶的許可權進入不同的頁面536
35.3.2 項目與任務狀態的級聯更新537
35.4 頁面代碼的設計538
35.4.1 公共資料庫連線代碼538
35.4.2 登錄頁面的設計538
35.4.3 管理員/經理項目列表頁面的設計540
35.4.4 創建新項目頁面的設計542
35.4.5 項目修改頁面的設計545
35.4.6 普通員工任務列表頁面的設計550
35.4.7 新賬號分配頁面的設計552
35.4.8 賬號許可權設定頁面的設計555
35.4.9 過期項目統計頁面的設計558
35.4.10 經理項目分配情況統計頁面的設計560
35.4.11 員工任務分配情況統計頁面的設計561
35.4.12 公司項目運營情況統計頁面的設計562
35.5 小結565
上一章介紹了如何使用php構建一個簡單的oa系統。在企業的日常工作中,往往需要遵循一些流程來工作。例如,報銷發票的流程可以是報銷人提出申請→相關經理批准→財務主管批准→支付報銷金額給報銷申請人等。流程管理系統可以簡單地實現對流程中各個過程進行追蹤並提示相關人員完成流程中相應的步驟。本章將以一個設備維修流程的管理系統為例簡要介紹如何使用php來構建流程管理系統。
36.1 流程管理系統的需求566
36.2 資料庫設計567
36.3 關鍵技術的實現569
36.3.1 使用觸發器來記錄請求更新日誌569
36.3.2 根據角色的不同對請求進行不同的操作569
36.4 頁面代碼的實現570
36.4.1 設備維修請求列表頁面的實現570
36.4.2 提交新請求頁面的實現572
36.4.3 需要執行操作的請求列表頁面的實現574
36.4.4 對請求執行操作頁面的實現576
36.4.5 操作日誌列表頁面的實現582
36.5 小結584
第37章 php與資源管理系統585
前面兩章站在企業層面上介紹了如何使用php創建企業oa系統和流程管理系統。目前常見的企業級系統還包括資源管理系統(enterprise resource management system,erm)。所謂資源包含企業中的網路資源、工程方面的資源和財務資源等。一個完整的資源管理系統應該包括對資源的數據存儲、業務分析以及輔助決策等,並且要與其他現有系統具有良好的接口。本章將以一個小型庫存資源管理系統為例,簡要介紹如何使用php構建一個資源管理系統。
37.1 資源管理系統的需求585
37.2 資料庫設計586
37.3 關鍵技術的實現588
37.3.1 使用sql計算獎金額度589
37.3.2 使用觸發器來限制獎金額度589
37.3.3 使用存儲過程從其他數據表獲取數據590
37.3.4 自動生成php代碼控制網站開關590
37.3.5 使用jpgraph生成統計圖591
37.4 各功能模組的具體實現592
37.4.1 用戶許可權認證的實現592
37.4.2 訂單輸入模組的實現593
37.4.3 庫存管理模組的實現597
37.4.4 賬目管理模組的實現601
37.4.5 獎金計算模組的實現606
37.4.6 年度統計模組的實現609
37.5 小結611
第38章 多國語言處理策略612
前面幾章介紹了如何使用php來開發一些實際項目。隨著信息全球化的高速發展,套用系統向全球化發展的趨勢也越加明顯。例如,一個跨國企業的辦公系統可能要面向這家跨國企業分布在全球的多家分公司,在開發這個辦公系統時可能就需要對多種語言提供支持。本章將以一個小型系統為例來介紹一下如何對php開發的系統提供多國語言支持的功能。
38.1 對字元編碼與gb2312、gbk和utf-8的理解612
38.1.1 gb2312與gbk612
38.1.2 unicode、ucs與utf-8612
38.1.3 網頁編碼的實現613
38.2 gls設計思想簡介614
38.3 客戶端語言選項的設定與獲取615
38.3.1 客戶端語言選項的設定615
38.3.2 使用php獲取客戶端語言選項615
38.4 一個簡單的帶有多國語言支持的套用開發615
38.4.1 資料庫設計615
38.4.2 頁面代碼的開發616
38.4.3 語言設定頁面的開發620
38.4.4 語言配置檔案選取頁面的開發620
38.4.5 語言配置檔案的設計621
38.5 小結624
在網際網路發達的今天,網民的數量也在高速增長,越來越多的大型網站通過將各種數據資源和網際網路資源結合起來構成了入口網站。入口網站通過將新聞系統、聊天室、bbs和電子商務等多種套用系統整合起來為用戶提供了豐富的網際網路信息。本章將主要介紹php在入口網站中的一些套用。
39.1 入口網站的特點625
39.2 靜態快取和動態快取626
39.2.1 靜態快取與動態快取簡介626
39.2.2 一個對系統實現靜態快取的例子626
39.2.3 一個對系統實現動態快取的例子628
39.3 入口網站中的互動設計630
39.3.1 什麼是互動設計631
39.3.2 一個不好的互動設計例子631
39.3.3 改進的互動設計例子633
39.4 負載均衡技術簡介635
39.4.1 常用的負載均衡技術635
39.4.2 常用的負載均衡算法636
39.5 一個使用用戶排隊機制解決網站大訪問量的例子636
39.6 小結638
第5篇 php的擴展套用
前面介紹了使用php構建伺服器端頁面,用戶可以通過瀏覽器訪問遠程伺服器上的php頁面來實現與伺服器的互動操作。除此之外,php還可以用來開發網路客戶端,用戶可以在自己的主機上訪問遠程伺服器,甚至可以通過命令行來與遠程伺服器進行互動。本章將介紹如何使用php訪問遠程web伺服器和ftp伺服器,以及使用命令行來運行php代碼。
40.1 php訪問遠程web頁面640
40.1.1 fsockopen函式640
40.1.2 一個遠程提交數據的實例641
40.2 php訂閱rss642
40.2.1 下載遠程rss642
40.2.2 rss的解析與保存643
40.3 php訪問ftp伺服器644
40.3.1 連線和斷開ftp伺服器644
40.3.2 登錄ftp伺服器644
40.3.3 獲取檔案列表645
40.3.4 檔案的上傳、下載和刪除646
40.3.5 目錄的創建和刪除647
40.4 php的命令行模式648
40.4.1 php命令行程式簡介648
40.4.2 執行參數的獲取649
40.4.3 一個使用命令行方式訪問ftp的實例649
40.5 小結652
第41章 php與xml-rpc、soap653
前面介紹了如何通過訪問php頁面來實現與伺服器的互動。除此之外,php還支持開發供程式調用的接口頁面。通過這些接口,遠程程式可以很容易地實現與伺服器的互動操作,而不需要複雜地通過對一般頁面進行讀取來進行互動。本章將介紹兩種最常見的遠程調用的技術以及使用php的實現方法。
41.1 xml-rpc簡介653
41.1.1 客戶端請求的xml格式653
41.1.2 伺服器回響的xml格式656
41.1.3 錯誤信息的xml格式656
41.2 php與xml-rpc的結合實例657
41.2.1 php的xml-rpc庫介紹657
41.2.2 php伺服器端頁面的編寫658
41.2.3 php客戶端頁面的編寫659
41.3 soap簡介659
41.4 php的soap套用實例660
41.4.1 soap擴展庫的使用方法660
41.4.2 伺服器端的編寫661
41.4.3 客戶端的編寫662
41.5 小結662
第42章 php與web service663
上一章介紹了如何使用php通過xml-rpc和soap進行遠程訪問以及遠程過程調用的方法,這些技術不單單實現了通過瀏覽器對頁面的直接訪問,而且提供了可供程式調用的函式為客戶端程式提供了便利。這種技術往往被稱為web service,在網際網路技術發展的今天,web service提供了一種可程式的數據接口方便了其他程式或客戶端的調用。本章將介紹web service技術以及如何使用php來實現。
42.1 web service簡介663
42.2 wsdl、uddi與web service664
42.2.1 wsdl簡介664
42.2.2 uddi簡介664
42.3 php與web service的互動操作665
42.3.1 NuSOAP類庫665
42.3.2 php創建web service666
42.3.3 php訪問web service668
42.4 小結670
第43章 php與ajax671
ajax是近年來剛剛流行起來的一種技術,全稱是asynchronous javascript and xml(異步javascript和xml)。ajax是多種技術的綜合套用,主要包括javascript技術、xml技術、dom技術和xmlhttprequest控制項等。ajax作為web 2.0的一個重要技術,大大推動了web技術的發展。本章將結合php來簡要介紹一下ajax的一些常見套用。
43.1 ajax簡介671
43.1.1 ajax工作原理671
43.1.2 ajax的優勢與劣勢672
43.2 xmlhttprequest的使用672
43.2.1 ajax初始化672
43.2.2 xmlhttprequest的屬性和方法673
43.2.3 簡單的伺服器請求674
43.2.4 html檔案的讀取675
43.2.5 xml檔案的讀取677
43.3 php與ajax的互動679
43.3.1 使用get方式與php互動679
43.3.2 使用post方式與php互動681
43.4 ajax套用實例682
43.4.1 用戶名唯一性驗證的實現682
43.4.2 動態列表框的實現684
43.4.3 局部刷新頁面的實現685
43.4.4 自動刷新頁面的實現688
43.4.5 進度條的實現689
43.4.6 表單輸入提示的實現691
43.5 小結693
本書前面的章節介紹了php的開發與套用。在進行php開發時,有時難免遇到無法使用php解決或很難使用php來解決的問題,這時就需要使用php擴展功能來擴展php的功能了。本章將簡要介紹如何在windows平台下進行php擴展的開發。
44.1 php擴展開發簡介694
44.2 使用visual c++編寫php擴展694
44.2.1 php擴展開發的前期準備695
44.2.2 php擴展代碼模板的生成696
44.2.3 模板代碼的修改與編譯697
44.2.4 擴展模組的調用699
44.3 一個擴展套用實例的開發——簡單加密解密函式700
44.3.1 加密函式的編寫700
44.3.2 解密函式的編寫701
44.3.3 測試代碼的編寫701
44.4 小結702