PHP高階程式設計:模式、框架與測試
【作 者】(加)Kevin McArthur [同作者作品] [作譯者介紹]
【譯 者】 汪泳[同譯者作品]
【叢 書 名】 圖靈程式設計叢書
【出 版 社】 人民郵電出版社 【書 號】 9787115193179
【上架時間】 2009-5-31
【出版日期】 2009 年7月 【開 本】 16開 【頁 碼】 1 【版 次】1-1
市場價 :¥45.00
會員價 : ¥33.75(75折)
新書75折預定及樣章試讀:http://www.china-pub.com/195610
【編輯推薦】
享有盛譽的PHP高階教程.
Zend Framework核心開發人員力作..
深入設計模式、PHP標準庫和JSON ...
【內容簡介】
今天,PHP已經是無可爭議的Web開發主流語言。PHP 5以後,它的物件導向特性也足以與Java和C#相抗衡。然而,講述PHP高階特性的資料一直缺乏,大大影響了PHP語言的深入應用。.
本書填補了這一空白。它專門針對有一定經驗的PHP程式設計師,詳細講解了對他們最為重要的主題:高階物件導向、設計模式、文件、測試和標準PHP庫等內容。同時,為適應目前Web開發的新趨勢,作者還全面探討了MVC架構和Zend Framework,以及Ajax、JSON、SOAP等Web 2.0技術。書中穿插的大量軟體開發實戰經驗和對PHP程式設計思想的感悟,將大大提升你的內在功力。...
【前言】
在過去的十年間,PHP已經從一套為Web站點開發人員提供的簡單工具轉化成完整的OOP(物件導向程式設計)語言了。在Web應用開發方面,PHP現在可與Java和C#這樣的主流程式語言抗衡,越來越多的公司為了給站點提供更加強大的功能都採用了PHP。原因很清楚:PHP既是一門易學的語言,又具有強大的特性。
通過閱讀本書,你將會深入理解OOP理論,並學到如何使用框架和高階的系統互操作功能,最大限度地發揮出PHP程式設計的威力。
讀者物件
這是一本高階書。我非常慎重地選擇本書應該包含的內容以及讀者應該掌握的知識。讀者應該對HTTP和PHP有深刻的理解,也就是說,應該瞭解如何建立Web頁面和Web表單,並且還應該理解像HTTP請求生命週期這樣的關鍵概念。
如果你還不瞭解這些內容,那麼建議閱讀由Larry ullman合著的PHP for the Web:Visual QuickStart Guide一書 。這是一本非常好的介紹PHP程式設計的書,任何希望成為PHP開發人員的人都絕對應該閱讀它。
如果你自己的PHP程式設計水平已達到中高階,那麼本書正好適合你。
本書結構
本書每一章內容都在前面章節的基礎上展開,同時也考慮到讀者的基礎參差不齊。如果你認為已經瞭解了某章講述的內容,那麼建議你跳過那一章,但最好還是讀一下每章末尾的“小結”部分,那是每一章內容的扼要總結。不過,古人云“溫故而知新”,就算是最熟練的程式設計師應該也會在每章中有新的收穫。
本書分為五個部分。
第一部分,OOP和模式。這部分是學習高階的OOP概念必備的基礎知識。該部分直接進入主題,講解了抽象類、介面、靜態方法、單例和工廠之類的模式,以及異常等內容。最後介紹了PHP 6所具有的新特性。
第二部分,測試和文件編寫。這部分包括了所有那些相關的“外圍”概念,如測試驅動開發和自動部署等。講述瞭如何編寫優秀的文件,並且介紹了PHPDoc和DocBook等幾種文件標準。這部分還介紹了反射API的內容,使讀者瞭解如何從程式中獲取後設資料。最後還討論了持續整合,以及如何使用Phing和Xinc這樣的工具來改善開發工作流。
第三部分,SPL(標準PHP庫)。SPL包含了一些最高階的PHP程式碼。它提供了對於像索引器和迭代器這樣的高階OOP概念的語言支援,還提供了處理異常的結構,以及像觀察者/釋出者這樣的模式。這部分資訊使大家可以建立出更加優美並且結構良好的類。
第四部分,MVC模式。MVC(模型—檢視—控制器)可能是PHP開發人員用到的最有用的開發模式。它可用來為應用程式建立結構,並且調配團隊中最好的資源來完成工作。對這一模式的深刻理解可能是任何PHP開發人員都必須掌握的最重要的職業技能,所以本書力求完整地解釋這一模式。這一部分還介紹了Zend框架,這是為眾多PHP公司所接受的一套基於MVC的框架。一開始,我們介紹瞭如何逐步建立起一個完整的框架應用程式,並使它開始執行,然後講解了Zend框架的核心概念和高階特性。
第五部分,Web 2.0。這部分介紹了關於Web 2.0所需要了解的所有事項。你將會學到關於Ajax、JSON、SOAP Web服務以及SSL客戶端驗證等方面的資訊。另外,這部分還包括了大量非常有用的輔導材料,這些輔導材料是基於個人經驗提供的。
聯絡作者
歡迎大家隨時通過電子郵箱Kevin.McArthur@StormTide.ca與作者取得聯絡。在http://www/. stormtide.ca/pro-hpp-book或者Apress出版社網站的http://www.apress.com/book/view/9781590598191頁面上可以獲得本書的最新資訊 。此外,大家還可以訪問#PHP EFnet通過IRC與作者聊天 。
致謝
本書是在數千名開發人員組成的社群十年來的技術創新基礎上寫成的。我感謝他們所有人,並以此書向他們的卓越成果致敬。
感謝David Fugate給了我編寫這本書的機會,以及在寫本書的過程中給我提供的必要的指導。
還要感謝Michael Geist,正是他提供的幫助和建議使我能夠順利地解決困難。
我還必須感謝我的朋友和家人對我的支援,沒有他們,我不可能獲得這些成果。
最後,我要對Apress出版社的所有人表示我最誠摯的謝意,其中有的人蔘與了本書的出版工作,有的人則幫助其他作者出版了高質量著作。沒有他們,這本書就不會面世
目 錄
第一部分 OOP和模式
第1章 抽象類、介面和契約式程式設計 2
1.1 抽象類 2
1.2 介面 4
1.3 instanceof操作符 7
1.4 契約式程式設計 8
1.5 小結 8
第2章 靜態變數、成員和方法 9
2.1 靜態變數 9
2.2 類中靜態元素的使用 10
2.2.1 靜態成員 10
2.2.2 雙冒號(paamayim nekudotayim) 11
2.2.3 靜態方法 14
2.3 “靜態”特性的爭論 15
2.4 小結 15
第3章 單例模式和工廠模式 17
3.1 職責和單例模式 17
3.2 工廠模式 19
3.2.1 影象物件工廠 20
3.2.2 可移植的資料庫 22
3.3 小結 24
第4章 異常 26
4.1 實現異常 26
4.1.1 異常元素 26
4.1.2 擴充套件異常 28
4.2 記錄異常日誌 30
4.2.1 記錄自定義異常的日誌 30
4.2.2 定義未捕捉的異常處理程式 31
4.3 異常產生的開銷 31
4.4 錯誤程式碼 32
4.5 型別提示和異常 33
4.6 重新丟擲異常 33
4.7 小結 34
第5章 PHP 6中的新特性 35
5.1 安裝PHP 35
5.2 PHP 6中的Unicode支援 37
5.2.1 Unicode語義 37
5.2.2 Unicode排序規則 39
5.3 名稱空間 40
5.4 延遲靜態繫結 41
5.5 具有動態特性的靜態方法 43
5.6 三目運算子(ifsetor) 43
5.7 XMLWriter類 43
5.8 小結 45
第二部分 測試和文件編寫
第6章 文件編寫和編碼規範 48
6.1 編碼規範 48
6.2 PHP註釋和文法解析 49
6.2.1 註釋的型別 50
6.2.2 關於文件註釋的更多資訊 50
6.2.3 文法解析 51
6.2.4 後設資料 51
6.3 PHPDoc 52
6.4 DocBook 55
6.4.1 建立DocBook要用到的XML
檔案 55
6.4.2 解析DocBook檔案 56
6.4.3 使用DocBook的元素 59
6.5 小結 62
第7章 反射API 64
7.1 反射API介紹 64
7.1.1 獲得使用者宣告的類 65
7.1.2 理解使用反射技術的外掛架構 66
7.2 解析基於反射的文件資料 71
7.2.1 安裝文件塊分詞器 72
7.2.2 訪問文件註釋資料 73
7.2.3 給文件註釋資料做分詞處理 73
7.2.4 解析識別符號 74
7.3 擴充套件反射API 76
7.3.1 解析器與反射API的整合 77
7.3.2 擴充套件反射類 78
7.3.3 更新解析器以處理行內標籤 85
7.3.4 新增特性 88
7.4 小結 92
第8章 測試、部署和持續整合 93
8.1 用作版本控制的Subversion 93
8.1.1 安裝Subversion 94
8.1.2 設定Subversion 94
8.1.3 提交修改和解決衝突 95
8.1.4 啟用對Subversion的訪問功能 97
8.2 用於單元測試的PHPUnit 98
8.2.1 安裝PHPUnit 98
8.2.2 建立第一個單元測試 98
8.2.3 理解PHPUnit 100
8.3 用於部署的Phing 102
8.3.1 安裝Phing 102
8.3.2 編寫Phing部署指令碼 103
8.4 Xinc,持續整合伺服器 106
8.4.1 安裝Xinc 106
8.4.2 建立Xinc配置檔案 106
8.4.3 啟動Xinc 107
8.5 用於除錯的Xdebug 107
8.5.1 安裝Xdebug 108
8.5.2 使用Xdebug跟蹤程式碼執行 108
8.5.3 使用Xdebug執行基準測試 110
8.5.4 使用Xdebug檢查程式碼覆蓋 110
8.5.5 使用Xdebug進行遠端除錯 111
8.6 小結 111
第三部分 SPL(標準PHP庫)
第9章 SPL簡介 114
9.1 SPL基礎 114
9.2 迭代器 115
9.2.1 Iterator介面 115
9.2.2 迭代器輔助函式 116
9.3 陣列過載 117
9.3.1 ArrayAccess介面 117
9.3.2 計數和陣列訪問 117
9.4 觀察者模式 118
9.5 序列化 121
9.6 SPL自動載入 123
9.7 物件識別符號 126
9.8 小結 126
第10章 SPL迭代器 128
10.1 迭代器介面和迭代器 128
10.1.1 迭代器介面 128
10.1.2 迭代器 130
10.2 迭代器的實際用法 142
10.2.1 使用SimpleXML解析XML
檔案 142
10.2.2 使用DBA訪問平面檔案
資料庫 143
10.3 小結 144
第11章 SPL檔案和目錄處理 145
11.1 檔案和目錄資訊 145
11.2 目錄的迭代訪問 147
11.2.1 列出檔案和目錄的清單 148
11.2.2 查詢檔案 150
11.2.3 建立自定義檔案過濾迭代器 151
11.3 SPL檔案物件操作 153
11.3.1 檔案內容的迭代訪問 153
11.3.2 CSV操作 153
11.3.3 搜尋檔案 157
11.4 小結 158
第12章 SPL陣列過載 160
12.1 ArrayAccess介面介紹 160
12.2 ArrayObject介紹 161
12.3 建立一個SPL購物車 162
12.4 使用物件作為鍵值 165
12.5 小結 168
第13章 SPL異常 169
13.1 邏輯異常 169
13.2 執行時異常 171
13.3 無效函式呼叫異常和無效方法
呼叫異常 171
13.4 域異常 172
13.5 範圍異常 172
13.6 無效引數異常 173
13.7 長度異常 174
13.8 溢位異常 175
13.9 向下溢位異常 175
13.10 小結 177
第四部分 MVC模式
第14章 MVC架構 180
14.1 為什麼使用MVC 180
14.2 MVC應用程式佈局 181
14.2.1 從Web伺服器開始 181
14.2.2 動作和控制器 182
14.2.3 模型 182
14.2.4 檢視 182
14.3 選擇MVC框架的標準 182
14.3.1 MVC框架的架構 182
14.3.2 MVC框架文件 183
14.3.3 MVC框架的社群 183
14.3.4 MVC框架的支援 183
14.3.5 MVC框架的靈活性 184
14.4 實現MVC框架 184
14.4.1 設定一個虛擬主機 184
14.4.2 建立一個MVC框架 185
14.5 小結 191
第15章 Zend框架簡介 192
15.1 設定Zend框架 192
15.1.1 安裝Zend框架 192
15.1.2 建立一個虛擬主機 193
15.1.3 引導檔案 194
15.2 建立控制器、檢視和模型 196
15.2.1 新增索引控制器 196
15.2.2 新增檢視 196
15.2.3 定義模型 197
15.3 新增功能 200
15.3.1 使用request和response
物件 201
15.3.2 使用內建的操作輔助類 202
15.3.3 使用內建的檢視輔助類 203
15.3.4 驗證輸入資訊 204
15.4 小結 208
第16章 Zend框架高階功能 209
16.1 管理配置檔案 209
16.1.1 使用陣列的方法 209
16.1.2 INI方法 210
16.1.3 XML方法 210
16.2 設定站點級別的檢視變數 211
16.3 共享物件 211
16.4 錯誤處理 212
16.5 應用程式日誌記錄 213
16.6 快取 214
16.6.1 快取功能在安全性上的考慮 214
16.6.2 快取技術 215
16.7 驗證使用者 217
16.8 在PHP語言中使用JSON 220
16.9 自定義路由 221
16.10 管理會話 223
16.11 傳送郵件 224
16.12 建立PDF檔案 225
16.12.1 建立新的PDF頁面 226
16.12.2 在PDF頁面上繪圖 226
16.13 與Web服務相整合 228
16.14 小結 229
第17章 應用Zend框架 230
17.1 模組和模型設定 230
17.1.1 常規的模組化的目錄結構 230
17.1.2 模型庫和Zend_Loader 231
17.2 請求生命週期 232
17.3 建立外掛 233
17.4 建立輔助類 234
17.4.1 編寫操作輔助類 234
17.4.2 編寫檢視輔助類 234
17.5 實現訪問控制功能 235
17.6 使用兩步檢視 238
17.6.1 建立一個主佈局 238
17.6.2 使用佔位符 239
17.7 小結 240
第五部分 Web 2.0
第18章 Ajax和JSON 242
18.1 JSON和PHP 242
18.1.1 JSON擴充套件 243
18.1.2 Zend框架中的JSON 244
18.2 JSON和JavaScript 244
18.3 一些Ajax專案 248
18.3.1 GET請求 248
18.3.2 POST請求 249
18.4 小結 252
第19章 Web服務和SOAP協議介紹 253
19.1 PHP Web服務架構介紹 253
19.2 WSDL介紹 254
19.2.1 WSDL術語 254
19.2.2 WSDL檔案 254
19.3 SOAP介紹 256
19.4 使用PHP SOAP擴充套件 257
19.4.1 SoapClient類的方法和
選項 259
19.4.2 SoapServer類的方法和
選項 261
19.5 真實的示例 261
19.6 小結 264
第20章 高階Web服務 265
20.1 複雜型別 265
20.1.1 複雜型別示例 265
20.1.2 類對映 270
20.2 身份驗證 271
20.2.1 HTTP驗證 271
20.2.2 通訊金鑰驗證 271
20.2.3 客戶端證照驗證 272
20.3 會話 272
20.4 物件和持久化 273
20.5 二進位制資料傳輸 274
20.6 小結 276
第21章 證照驗證 277
21.1 PKI安全性 277
21.1.1 CA 277
21.1.2 Web伺服器證照 278
21.1.3 客戶端證照 278
21.1.4 根CA證照 278
21.2 設定客戶端證照驗證 278
21.2.1 建立客戶端的證照驗證機制 279
21.2.2 建立一個自簽名的Web服務
器證照 281
21.2.3 為SSL配置Apache伺服器 283
21.2.4 建立客戶端證照 284
21.2.5 只允許證照驗證過的客戶端
訪問伺服器 286
21.2.6 測試證照 287
21.3 PHP驗證控制 287
21.3.1 將PHP繫結到證照上 288
21.3.2 設定Web服務驗證 288
21.4 小結 289
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/chinapub_2009/archive/2009/06/04/4242446.aspx