第一部分 介紹
第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 本書第2版中的新內容 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 12
2.3 擁護和疑慮:關於對象的爭辯 13
2.4 小結 13
第3章 對象基礎 14
3.1 類和對象 14
3.1.1 編寫第一個類 14
3.1.2 第一個對象(或兩個) 15
3.2 設置類中的屬性 15
3.3 使用方法 18
3.4 參數和類型 20
3.4.1 基本類型 20
3.4.2 獲得提示:對象類型 23
3.5 繼承 24
3.5.1 繼承問題 24
3.5.2 使用繼承 28
3.5.3 public、private、protected:管理類的訪問 32
3.6 小結 35
第4章 高級特性 36
4.1 靜態方法和屬性 36
4.2 常量屬性 39
4.3 抽象類 39
4.4 接口 41
4.5 錯誤處理 43
4.6 Final類和方法 48
4.7 使用攔截器 49
4.8 析構方法 53
4.9 使用__clone()復製對象 54
4.10 定義對象的字符串值 56
4.11 小結 57
第5章 對象工具 58
5.1 PHP和包 58
5.1.1 PHP和命名空間 60
5.1.2 包含路徑 62
5.1.3 自動加載 63
5.2 類函數和對象函數 64
5.2.1 查找類 64
5.2.2 瞭解對象或類 65
5.2.3 瞭解類中的方法 66
5.2.4 瞭解類屬性 67
5.2.5 瞭解繼承 67
5.2.6 方法調用 68
5.3 反射API 69
5.3.1 入門 69
5.3.2 開始行動 69
5.3.3 檢查類 71
5.3.4 檢查方法 72
5.3.5 檢查方法參數 74
5.3.6 使用反射API 75
5.4 小結 78
第6章 對象與設計 79
6.1 代碼設計的定義 79
6.2 麵嚮對象設計和過程式編程 80
6.2.1 職責 83
6.2.2 內聚 83
6.2.3 耦閤 83
6.2.4 正交 84
6.3 選擇類 84
6.4 多態 85
6.5 封裝 86
6.6 忘記細節 87
6.7 四個方嚮標 88
6.7.1 代碼重復 88
6.7.2 類知道的太多 88
6.7.3 萬能的類 88
6.7.4 條件語句 89
6.8 UML 89
6.8.1 類圖 89
6.8.2 時序圖 94
6.9 小結 95
第三部分 模式
第7章 什麼是設計模式?為何使用它們 98
7.1 什麼是設計模式 98
7.2 設計模式概覽 100
7.2.1 命名 100
7.2.2 問題 100
7.2.3 解決方案 101
7.2.4 效果 101
7.3 《設計模式》格式 101
7.4 為什麼使用設計模式 102
7.4.1 一個設計模式定義瞭一個問題 102
7.4.2 一個設計模式定義瞭一個解決方案 102
7.4.3 設計模式是語言無關的 102
7.4.4 模式定義瞭一組詞匯 102
7.4.5 模式是經過測試的 103
7.4.6 模式是為協作而設計的 103
7.4.7 設計模式促進良好設計 103
7.5 PHP與設計模式 103
7.6 小結 104
第8章 模式原則 105
8.1 模式的啓示 105
8.2 組閤與繼承 106
8.2.1 問題 106
8.2.2 使用組閤 108
8.3 解耦 110
8.3.1 問題 110
8.3.2 降低耦閤 111
8.4 針對接口編程,而不是針對實現編程 112
8.5 變化的概念 113
8.6 父子關係 113
8.7 模式 114
8.7.1 用於生成對象的模式 114
8.7.2 用於組織對象和類的模式 114
8.7.3 麵嚮任務的模式 114
8.7.4 企業模式 114
8.7.5 數據庫模式 114
8.8 小結 115
第9章 生成對象 116
9.1 生成對象的問題和解決方法 116
9.2 單例模式 119
9.2.1 問題 120
9.2.2 實現 120
9.2.3 結果 122
9.3 工廠方法模式 122
9.3.1 問題 122
9.3.2 實現 125
9.3.3 結果 126
9.4 抽象工廠模式 127
9.4.1 問題 127
9.4.2 實現 128
9.4.3 結果 129
9.4.4 原型模式 131
9.4.5 問題 132
9.4.6 實現 133
9.5 某些模式的騙術 134
9.6 小結 136
第10章 讓麵嚮對象編程更加靈活的模式 137
10.1 構造可靈活創建對象的類 137
10.2 組閤模式 137
10.2.1 問題 138
10.2.2 實現 139
10.2.3 效果 143
10.2.4 組閤模式小結 146
10.3 裝飾模式 146
10.3.1 問題 146
10.3.2 實現 148
10.3.3 效果 151
10.4 外觀模式 151
10.4.1 問題 152
10.4.2 實現 153
10.4.3 效果 153
10.5 小結 154
第11章 執行及描述任務 155
11.1 解釋器模式 155
11.1.1 問題 155
11.1.2 實現 156
11.1.3 解釋器的問題 162
11.2 策略模式 163
11.2.1 問題 163
11.2.2 實現 164
11.3 觀察者模式 167
11.4 訪問者模式 173
11.4.1 問題 174
11.4.2 實現 175
11.4.3 訪問者模式的問題 178
11.5 命令模式 179
11.5.1 問題 179
11.5.2 實現 179
11.6 小結 183
第12章 企業模式 184
12.1 架構概述 184
12.1.1 模式 184
12.1.2 應用程序和層 185
12.2 企業架構之外的基礎模式 187
12.2.1 注冊錶 187
12.2.2 實現 188
12.3 錶現層 196
12.3.1 前端控製器 196
12.3.2 應用控製器 205
12.3.3 頁麵控製器 214
12.3.4 模闆視圖和視圖助手 218
12.4 業務邏輯層 220
12.4.1 事務腳本 221
12.4.2 領域模型 225
12.5 小結 227
第13章 數據庫模式 228
13.1 數據層 228
13.2 數據映射器 228
13.2.1 問題 229
13.2.2 實現 229
13.2.3 效果 239
13.3 標識映射 239
13.3.1 問題 240
13.3.2 實現 240
13.3.3 效果 242
13.4 工作單元 243
13.4.1 問題 243
13.4.2 實現 243
13.4.3 效果 246
13.4.4 延遲加載 247
13.4.5 問題 247
13.4.6 實現 247
13.4.7 效果 249
13.5 領域對象工廠 249
13.5.1 問題 249
13.5.2 實現 249
13.5.3 效果 250
13.6 標識對象 252
13.6.1 問題 252
13.6.2 實現 252
13.6.3 效果 256
13.7 選擇工廠和更新工廠模式 257
13.7.1 問題 257
13.7.2 實現 257
13.7.3 效果 259
13.8 數據映射器中剩下些什麼 260
13.9 小結 262
第四部分 實踐
第14章 良好和糟糕的實踐 264
14.1 超越代碼 264
14.2 藉一個輪子 264
14.3 閤作愉快 266
14.4 為你的代碼插上雙翼 267
14.5 文檔 267
14.6 測試 268
14.7 小結 269
第15章 PEAR 270
15.1 什麼是PEAR 270
15.2 安裝PEAR包 271
15.3 使用PEAR包 273
15.4 創建自己的PEAR包 278
15.4.1 package.xml 278
15.4.2 package.xml的組成元素 278
15.4.3 contents元素 279
15.4.4 依賴 282
15.4.5 使用phprelease進行靈活的自定義安裝 283
15.4.6 發布包 284
15.4.7 創建自己的PEAR頻道 284
15.5 小結 288
第16章 用phpDocumentor生成文檔 289
16.1 為什麼要使用文檔 289
16.2 安裝 290
16.3 生成文檔 290
16.4 DocBlock注釋 292
16.5 類的文檔 293
16.6 文件的文檔 294
16.7 屬性的文檔 295
16.8 方法的文檔 296
16.9 在文檔中創建鏈接 297
16.10 小結 300
第17章 使用CVS進行版本控製 301
17.1 為什麼要使用版本控製 301
17.2 獲得CVS 302
17.3 配置CVS代碼庫 303
17.3.1 創建代碼庫 303
17.3.2 配置客戶端 304
17.3.3 在多颱機器上運行CVS 304
17.4 開始項目 305
17.5 更新和提交 307
17.6 增加和刪除文件及目錄 309
17.6.1 添加文件 309
17.6.2 刪除文件 310
17.6.3 添加目錄 310
17.6.4 添加二進製文件 311
17.6.5 刪除目錄 311
17.7 標記和導齣項目 312
17.7.1 標記項目 313
17.7.2 通過標簽獲取項目代碼 313
17.7.3 導齣項目 314
17.8 創建項目分支 314
17.9 小結 317
第18章 使用PHPUnit進行測試 318
18.1 功能測試與單元測試 318
18.2 手工測試 319
18.3 引入PHPUnit 321
18.3.1 創建測試用例 321
18.3.2 斷言方法 322
18.3.3 測試異常 323
18.3.4 運行測試套件 324
18.3.5 約束 326
18.3.6 模擬與樁 328
18.3.7 失敗是成功之母 331
18.4 警告 333
18.5 小結 335
第19章 用Phing實現項目的自動 構建 336
19.1 什麼是Phing 336
19.2 獲取和安裝Phing 337
19.3 編寫build文檔 337
19.3.1 目標 339
19.3.2 屬性 340
19.3.3 類型 345
19.3.4 任務 348
19.4 小結 352
第五部分 結論
第20章 對象、模式與實踐 354
20.1 對象 354
20.1.1 選擇 355
20.1.2 封裝和委托 355
20.1.3 解耦 355
20.1.4 復用性 356
20.1.5 美學 356
20.2 模式 356
20.2.1 模式給我們帶來瞭什麼 357
20.2.2 模式和設計原則 357
20.3 實踐 359
20.3.1 測試 359
20.3.2 文檔 359
20.3.3 版本控製 360
20.3.4 自動構建 360
20.3.5 我們還遺漏瞭什麼 360
20.4 小結 361
第六部分 附錄
附錄A 參考文獻 364
附錄B 簡單的解析器 366
· · · · · · (
收起)
評分
☆☆☆☆☆
筆記沒有跟上 PHP總的來說,還是不怎麼遞。
評分
☆☆☆☆☆
對於全麵理解OOP思想,很有幫助,並藉鑒瞭java、ruby等優秀的思想模式。
評分
☆☆☆☆☆
對於php麵嚮對象支持部分不錯,對於設計模式方麵的介紹沒有細看,基本和java類似
評分
☆☆☆☆☆
對於全麵理解OOP思想,很有幫助,並藉鑒瞭java、ruby等優秀的思想模式。
評分
☆☆☆☆☆
好書!當天看瞭第二天麵試就用上瞭,麵試問的問題幾乎都在上麵
評分
☆☆☆☆☆
读第一遍读到数据库模式, 感觉吃不消了, 所以跳过去直接读后面的实践部分. 目前在读第二遍, 希望这次能吃透作者讲的数据库模式. 这绝对是一本每读一遍都会受益一便的好书, 虽然书中讲的各种模式目前看来没有应用到工作中的机会, 但是通过作者的讲解, 你会看到这些模式一旦应用...
評分
☆☆☆☆☆
读第一遍读到数据库模式, 感觉吃不消了, 所以跳过去直接读后面的实践部分. 目前在读第二遍, 希望这次能吃透作者讲的数据库模式. 这绝对是一本每读一遍都会受益一便的好书, 虽然书中讲的各种模式目前看来没有应用到工作中的机会, 但是通过作者的讲解, 你会看到这些模式一旦应用...
評分
☆☆☆☆☆
设计模式一直以来很难懂,之前遇到很大的瓶颈,买回来这本书,读起来基本一目十行,不是因为内容太简单,而是该做的我都已经做过了,只是在模式上认识还不够清晰,概念体系不完整,所以想看书补补,觉得这本书设计模式部分写的非常好。甚至这本书应该只保留对象和设计模式部分...
評分
☆☆☆☆☆
評分
☆☆☆☆☆
每个段落先提出问题, 给出实现, 并讨论成效, 对于OO入门有一定帮助,能够帮助开拓思路,对OO老鸟有参考价值,可以换换空气,让脑子清空一下,听听别人说什么,对开发新程序有一定作用 内容并不能说新颖,毕竟内容已经是2007的了,不过设计模式并不会随着技术的改进而有多少变化,毕竟理...