深入PHP:面向對象、模式與實踐(第3版)

深入PHP:面向對象、模式與實踐(第3版)

《深入PHP:面向對象、模式與實踐(第3版)》是2011年7月人民郵電出版社出版的圖書,作者是Matt Zandstra。

基本介紹

  • 書名:深入PHP:面向對象、模式與實踐(第3版)
  • 作者:Matt Zandstra 
  • 原版名稱:PHP objects, patterns, and practice
  • 譯者:陳浩[等]譯
  • ISBN:9787115256249
  • 類別:PHP
  • 頁數:450
  • 定價:69.00元
  • 出版社:人民郵電出版社
  • 出版時間:2011-7
內容簡介,目錄,

內容簡介

贊德斯從事網際網路套用開發十餘年,目前是雅虎公司工程師,其編著的《深入PHP:面向對象、模式與實踐(第3版)》全面深入地剖析了面向對象的PHP編程與設計。書中首先介紹了PHP的對象特性(包括抽象類、反射、接口和錯誤處理等)及可幫助開發人員了解類、對象和方法的對象工具,然後介紹了設計模式。闡述了模式的概念,展示了如何在PHP中實現一些關鍵的模式。並用專門的章節介紹了企業模式和資料庫模式。最後,本書圍繞PHP應用程式開發。詳細介紹了一批極為實用的輔助開發工具。討論了具有普遍意義的最佳開發實踐。另外,這一版中還新增了閉包、命名空間、持續集成等內容。 本書適合每位PHP開發人員進階參考。可幫助他們掌握PHP面向對象設計和開發的精髓,並最終躋身高端PHP開發人員之列。

目錄

第一部分 介紹
第1章 PHP:設計與管理 2
1.1 問題 2
1.2 PHP 和其他語言 3
1.3 關於本書 5
1.3.1 對象 5
1.3.2 模式 5
1.3.3 實踐 6
1.3.4 第3版新增內容 7
1.4 小結 7
第二部分 對象
第2章 PHP與對象 10
2.1 PHP對象的偶然成功 10
2.1.1 最初:PHP/FI 10
2.1.2 語法糖:PHP 3 10
2.1.3 一場靜悄悄的革命:PHP 4 11
2.1.4 擁抱改變:PHP 5 12
2.2 走向未來:PHP 6 13
2.3 擁護和疑慮:關於對象的爭辯 13
2.4 小結 14
第3章 對象基礎 15
3.1 類和對象 15
3.1.1 編寫第一個類 15
3.1.2 第一個對象(或兩個) 16
3.2 設定類中的屬性 17
3.3 使用方法 19
3.4 參數和類型 21
3.4.1 基本類型 22
3.4.2 獲得提示:對象類型 24
3.5 繼承 26
3.5.1 繼承問題 26
3.5.2 使用繼承 30
3.5.3 public、private、protected:管理類的訪問 35
3.6 小結 39
第4章 高級特性 40
4.1 靜態方法和屬性 40
4.2 常量屬性 43
4.3 抽象類 44
4.4 接口 46
4.5 延遲靜態綁定:static關鍵字 47
4.6 錯誤處理 50
4.7 Final 類和方法 56
4.8 使用攔截器 57
4.9 析構方法 61
4.10 使用__clone()複製對象 62
4.11 定義對象的字元串值 64
4.12 回調、匿名函式和閉包 65
4.13 小結 69
第5章 對象工具 70
5.1 PHP和包 70
5.1.1 PHP包和命名空間 70
5.1.2 自動載入 78
5.2 類函式和對象函式 79
5.2.1 查找類 80
5.2.2 了解對象或類 81
5.2.3 了解類中的方法 82
5.2.4 了解類屬性 83
5.2.5 了解繼承 83
5.2.6 方法調用 84
5.3 反射API 85
5.3.1 入門 85
5.3.2 開始行動 86
5.3.3 檢查類 88
5.3.4 檢查方法 89
5.3.5 檢查方法參數 91
5.3.6 使用反射API 92
5.4 小結 95
第6章 對象與設計 96
6.1 代碼設計的定義 96
6.2 面向對象設計和過程式編程 97
6.2.1 職責 100
6.2.2 內聚 100
6.2.3 耦合 101
6.2.4 正交 101
6.3 選擇類 101
6.4 多態 102
6.5 封裝 104
6.6 忘記細節 105
6.7 4個方向標 105
6.7.1 代碼重複 106
6.7.2 類知道的太多 106
6.7.3 萬能的類 106
6.7.4 條件語句 106
6.8 UML 106
6.8.1 類圖 107
6.8.2 時序圖 111
6.9 小結 112
第三部分 模式
第7章 什麼是設計模式?為何使用它們 114
7.1 什麼是設計模式 114
7.2 設計模式概覽 116
7.2.1 命名 116
7.2.2 問題 116
7.2.3 解決方案 117
7.2.4 效果 117
7.3 《設計模式》格式 117
7.4 為什麼使用設計模式 118
7.4.1 一個設計模式定義了一個問題 118
7.4.2 一個設計模式定義了一個解決方案 118
7.4.3 設計模式是語言無關的 118
7.4.4 模式定義了一組辭彙 118
7.4.5 模式是經過測試的 119
7.4.6 模式是為協作而設計的 119
7.4.7 設計模式促進良好設計 119
7.5 PHP與設計模式 120
7.6 小結 120
第8章 模式原則 121
8.1 模式的啟示 121
8.2 組合與繼承 122
8.2.1 問題 122
8.2.2 使用組合 124
8.3 解耦 127
8.3.1 問題 127
8.3.2 降低耦合 128
8.4 針對接口編程,而不是針對實現編程 130
8.5 變化的概念 131
8.6 父子關係 132
8.7 模式 132
8.7.1 用於生成對象的模式 133
8.7.2 用於組織對象和類的模式 133
8.7.3 面向任務的模式 133
8.7.4 企業模式 133
8.7.5 資料庫模式 133
8.8 小結 133
第9章 生成對象 134
9.1 生成對象的問題和解決方法 134
9.2 單例模式 138
9.2.1 問題 138
9.2.2 實現 139
9.2.3 結果 141
9.3 工廠方法模式 141
9.3.1 問題 141
9.3.2 實現 143
9.3.3 結果 145
9.4 抽象工廠模式 146
9.4.1 問題 146
9.4.2 實現 147
9.4.3 結果 148
9.4.4 原型模式 150
9.4.5 問題 150
9.4.6 實現 151
9.5 某些模式的騙術 153
9.6 小結 154
第10章 讓面向對象編程更加靈活的模式 155
10.1 構造可靈活創建對象的類 155
10.2 組合模式 155
10.2.1 問題 156
10.2.2 實現 158
10.2.3 效果 161
10.2.4 組合模式小結 164
10.3 裝飾模式 165
10.3.1 問題 165
10.3.2 實現 167
10.3.3 效果 170
10.4 外觀模式 170
10.4.1 問題 170
10.4.2 實現 172
10.4.3 效果 172
10.5 小結 173
第11章 執行及描述任務 174
11.1 解釋器模式 174
11.1.1 問題 174
11.1.2 實現 175
11.1.3 解釋器的問題 182
11.2 策略模式 183
11.2.1 問題 183
11.2.2 實現 184
11.3 觀察者模式 187
11.4 訪問者模式 194
11.4.1 問題 194
11.4.2 實現 195
11.4.3 訪問者模式的問題 199
11.5 命令模式 200
11.5.1 問題 200
11.5.2 實現 200
11.6 小結 204
第12章 企業模式 205
12.1 架構概述 205
12.1.1 模式 205
12.1.2 應用程式和層 206
12.2 企業架構之外的基礎模式 208
12.2.1 註冊表 208
12.2.2 實現 209
12.3 表現層 217
12.3.1 前端控制器 217
12.3.2 套用控制器 227
12.3.3 頁面控制器 237
12.3.4 模板視圖和視圖助手 242
12.4 業務邏輯層 245
12.4.1 事務腳本 245
12.4.2 領域模型 249
12.5 小結 252
第13章 資料庫模式 253
13.1 數據層 253
13.2 數據映射器 253
13.2.1 問題 254
13.2.2 實現 254
13.2.3 效果 265
13.3 標識映射 266
13.3.1 問題 266
13.3.2 實現 266
13.3.3 效果 269
13.4 工作單元 269
13.4.1 問題 269
13.4.2 實現 270
13.4.3 效果 274
13.4.4 延遲載入 274
13.4.5 問題 274
13.4.6 實現 274
13.4.7 效果 276
13.5 領域對象工廠 276
13.5.1 問題 276
13.5.2 實現 277
13.5.3 效果 278
13.6 標識對象 279
13.6.1 問題 279
13.6.2 實現 280
13.6.3 效果 285
13.7 選擇工廠和更新工廠模式 285
13.7.1 問題 285
13.7.2 實現 285
13.7.3 效果 288
13.8 數據映射器中剩下些什麼 289
13.9 小結 291
第四部分 實踐
第14章 良好和糟糕的實踐 294
14.1 超越代碼 294
14.2 借一個輪子 295
14.3 合作愉快 296
14.4 為你的代碼插上雙翼 297
14.5 文檔 297
14.6 測試 298
14.7 持續集成 299
14.8 小結 300
第15章 PEAR和Pyrus 301
15.1 什麼是PEAR 301
15.2 了解Pyrus 302
15.3 安裝PEAR包 303
15.4 使用PEAR包 306
15.5 創建自己的PEAR包 311
15.5.1 package.xml 311
15.5.2 package.xml的組成 312
15.5.3 contents元素 313
15.5.4 依賴 316
15.5.5 使用phprelease進行靈活的自定義安裝 317
15.5.6 準備發布包 318
15.5.7 創建自己的PEAR頻道 318
15.6 小結 323
第16章 用phpDocumentor生成文檔 324
16.1 為什麼要使用文檔 324
16.2 安裝 325
16.3 生成文檔 325
16.4 DocBlock注釋 327
16.5 類的文檔 328
16.6 檔案的文檔 330
16.7 屬性的文檔 330
16.8 方法的文檔 331
16.9 在文檔中創建連結 333
16.10 小結 335
第17章 使用Subversion進行版本控制 336
17.1 為什麼要使用版本控制 336
17.2 獲得Subversion 337
17.3 配置Subversion代碼庫 338
17.4 開始項目 339
17.5 更新和提交 341
17.6 增加和刪除檔案及目錄 344
17.6.1 添加檔案 344
17.6.2 刪除檔案 345
17.6.3 添加目錄 345
17.6.4 刪除目錄 345
17.7 標記和導出項目 345
17.7.1 標記項目 345
17.7.2 導出項目 346
17.8 創建項目分支 347
17.9 小結 350
第18章 使用PHPUnit進行測試 351
18.1 功能測試與單元測試 351
18.2 手工測試 352
18.3 引入PHPUnit 354
18.3.1 創建測試用例 354
18.3.2 斷言方法 355
18.3.3  測試異常 356
18.3.4 運行測試套件 357
18.3.5 約束 358
18.3.6 模擬與樁 360
18.3.7 失敗是成功之母 362
18.4 編寫Web測試 365
18.4.1 為測試重構Web套用 366
18.4.2 簡單的Web測試 368
18.4.3 Selenium 370
18.5 警告 374
18.6 小結 376
第19章 用Phing實現項目的自動構建 377
19.1 什麼是Phing 377
19.2 獲取和安裝Phing 378
19.3 編寫build文檔 378
19.3.1 目標 380
19.3.2 屬性 382
19.3.3 類型 387
19.3.4 任務 391
19.4 小結 394
第五部分 結論
第20章 持續集成 396
20.1 什麼是持續集成 396
20.2 CruiseControl和phpUnderControl 404
20.2.1 安裝CruiseControl 404
20.2.2 安裝phpUnderControl 406
20.2.3 安裝項目 408
20.3 小結 418
第21章 對象、模式與實踐 419
21.1 對象 419
21.1.1 選擇 420
21.1.2 封裝和委託 420
21.1.3 解耦 420
21.1.4 復用性 421
21.1.5 美學 421
21.2 模式 421
21.2.1 模式給我們帶來了什麼 422
21.2.2 模式和設計原則 422
21.3 實踐 424
21.3.1 測試 424
21.3.2 文檔 424
21.3.3 版本控制 425
21.3.4 自動構建 425
21.3.5 持續集成 425
21.3.6 我們還遺漏了什麼 425
21.4 小結 426
第六部分 附錄
附錄A 參考文獻 428
附錄B 簡單的解析器 431

相關詞條

熱門詞條

聯絡我們