第一部分 對象
第1章 PHP:設計和管理 2
1.1 問題 2
1.2 PHP與其他語言 3
1.3 關於本書 5
1.3.1 對象 5
1.3.2 模式 6
1.3.3 實踐 6
1.3.4 第5版新增內容 7
1.4 小結 8
第2章 PHP和對象 9
2.1 PHP對象的偶然成功 9
2.1.1 起源:PHP/FI 9
2.1.2 語法糖:PHP 3 9
2.1.3 一場靜悄悄的革命:PHP 4 10
2.1.4 擁抱變化:PHP 5 11
2.1.5 迎頭追趕:PHP 7 12
2.2 擁護和顧慮:關於對象的爭辯 12
2.3 小結 13
第3章 對象基礎 14
3.1 類和對象 14
3.1.1 第一個類 14
3.1.2 一個(或兩個)對象 15
3.2 設置類中的屬性 16
3.3 使用方法 18
3.4 參數和類型 21
3.4.1 基本類型 21
3.4.2 接受提示:對象類型 24
3.5 繼承 28
3.5.1 繼承問題 28
3.5.2 使用繼承 33
3.5.3 public、private和protected:管理類的訪問 38
3.6 小結 43
第4章 高級特性 44
4.1 靜態方法和屬性 44
4.2 常量屬性 47
4.3 抽象類 48
4.4 接口 50
4.5 trait 52
4.5.1 trait可以解決的問題 52
4.5.2 定義和使用trait 53
4.5.3 使用多個trait 54
4.5.4 組閤使用trait與接口 55
4.5.5 通過insteadof管理方法名衝突 56
4.5.6 使用彆名重寫trait的方法 57
4.5.7 在trait中使用靜態方法 58
4.5.8 訪問宿主類的屬性 59
4.5.9 在trait中定義抽象方法 59
4.5.10 改變trait中方法的訪問權限 60
4.6 延遲靜態綁定:static關鍵字 61
4.7 錯誤處理 65
4.8 final類和方法 73
4.9 內部錯誤類 74
4.10 使用攔截器 75
4.11 定義析構方法 81
4.12 使用__clone()復製對象 82
4.13 定義對象的字符串值 85
4.14 迴調、匿名函數和閉包 86
4.15 匿名類 90
4.16 小結 92
第5章 對象工具 93
5.1 PHP和包 93
5.1.1 PHP包和命名空間 93
5.1.2 自動加載 101
5.2 類函數和對象函數 105
5.2.1 查找類 106
5.2.2 檢查對象或類 106
5.2.3 得到指嚮類的完全限定的字符串引用 107
5.2.4 檢查方法 108
5.2.5 檢查類屬性 110
5.2.6 檢查繼承 110
5.2.7 方法調用 111
5.3 反射API 112
5.3.1 入門 112
5.3.2 是時候大乾一場瞭 113
5.3.3 檢查類 115
5.3.4 檢查方法 117
5.3.5 檢查方法參數 118
5.3.6 使用反射API 120
5.4 小結 123
第6章 對象與設計 124
6.1 定義代碼設計 124
6.2 麵嚮對象編程與麵嚮過程編程 125
6.2.1 職責 129
6.2.2 內聚 129
6.2.3 耦閤 129
6.2.4 正交 129
6.3 選擇類 130
6.4 多態 131
6.5 封裝 132
6.6 忘記細節 133
6.7 四個方嚮標 133
6.7.1 代碼重復 134
6.7.2 類知道太多 134
6.7.3 萬能的類 134
6.7.4 條件語句 134
6.8 UML 134
6.8.1 類圖 135
6.8.2 序列圖 140
6.9 小結 142
第二部分 模式
第7章 什麼是設計模式,為什麼要使用設計模式 144
7.1 什麼是設計模式 144
7.2 設計模式概要 146
7.2.1 名稱 146
7.2.2 問題 146
7.2.3 解決方案 147
7.2.4 效果 147
7.3 《設計模式》的格式 147
7.4 為什麼使用設計模式 148
7.4.1 設計模式定義瞭問題 148
7.4.2 設計模式定義瞭解決方案 148
7.4.3 設計模式與編程語言無關 148
7.4.4 模式定義瞭一組詞匯 148
7.4.5 模式是經過測試的 149
7.4.6 模式為協作而設計 149
7.4.7 設計模式促進優秀設計 149
7.4.8 流行的框架都使用瞭設計模式 150
7.5 PHP與設計模式 150
7.6 小結 150
第8章 一些模式原則 151
8.1 模式的啓示 151
8.2 組閤與繼承 152
8.2.1 問題 152
8.2.2 使用組閤 155
8.3 解耦 157
8.3.1 問題 157
8.3.2 解耦 159
8.4 針對接口編程,而不是針對實現編程 161
8.5 概念在變化 162
8.6 不要盲從模式 162
8.7 模式 163
8.7.1 用於生成對象的模式 163
8.7.2 用於組織對象和類的模式 163
8.7.3 麵嚮任務的模式 163
8.7.4 企業設計模式 163
8.7.5 數據庫模式 163
8.8 小結 163
第9章 生成對象 164
9.1 生成對象的問題和解決方案 164
9.2 單例模式 168
9.2.1 問題 169
9.2.2 實現 169
9.2.3 效果 171
9.3 工廠方法模式 172
9.3.1 問題 172
9.3.2 實現 175
9.3.3 效果 177
9.4 抽象工廠模式 177
9.4.1 問題 177
9.4.2 實現 178
9.4.3 效果 180
9.5 原型模式 181
9.5.1 問題 182
9.5.2 實現 183
9.6 推嚮邊緣:服務定位器 186
9.7 完全隔離:依賴注入 187
9.7.1 問題 187
9.7.2 實現 188
9.7.3 效果 191
9.8 小結 191
第10章 使麵嚮對象編程更加靈活的模式 192
10.1 構造可靈活創建對象的類 192
10.2 組閤模式 192
10.2.1 問題 193
10.2.2 實現 195
10.2.3 效果 199
10.2.4 組閤模式小結 202
10.3 裝飾器模式 202
10.3.1 問題 202
10.3.2 實現 205
10.3.3 效果 209
10.4 外觀模式 209
10.4.1 問題 209
10.4.2 實現 211
10.4.3 效果 211
10.5 小結 212
第11章 執行及描述任務 213
11.1 解釋器模式 213
11.1.1 問題 213
11.1.2 實現 214
11.1.3 解釋器模式的問題 222
11.2 策略模式 222
11.2.1 問題 222
11.2.2 實現 223
11.3 觀察者模式 227
11.4 訪問者模式 235
11.4.1 問題 235
11.4.2 實現 236
11.4.3 訪問者模式的問題 241
11.5 命令模式 242
11.5.1 問題 242
11.5.2 實現 242
11.6 空對象模式 247
11.6.1 問題 247
11.6.2 實現 249
11.7 小結 251
第12章 企業設計模式 252
12.1 架構概述 252
12.1.1 模式 252
12.1.2 應用與分層 253
12.2 企業架構外的基礎模式 255
12.2.1 注冊錶 255
12.2.2 實現 256
12.2.3 效果 260
12.3 錶示層 260
12.3.1 前端控製器 261
12.3.2 應用控製器 271
12.3.3 頁麵控製器 283
12.3.4 模闆視圖和視圖助手 288
12.4 業務邏輯層 291
12.4.1 事務腳本 291
12.4.2 領域模型 295
12.5 小結 298
第13章 數據庫設計模式 299
13.1 數據層 299
13.2 數據映射器 299
13.2.1 問題 300
13.2.2 實現 300
13.2.3 效果 313
13.3 標識映射 315
13.3.1 問題 315
13.3.2 實現 315
13.3.3 效果 318
13.4 工作單元 319
13.4.1 問題 319
13.4.2 實現 319
13.4.3 效果 323
13.5 延遲加載 323
13.5.1 問題 323
13.5.2 實現 324
13.5.3 效果 326
13.6 領域對象工廠 326
13.6.1 問題 326
13.6.2 實現 326
13.6.3 效果 327
13.7 標識對象 329
13.7.1 問題 329
13.7.2 實現 330
13.7.3 效果 335
13.8 選擇工廠與更新工廠模式 335
13.8.1 問題 336
13.8.2 實現 336
13.8.3 效果 340
13.9 現在映射器中還剩下什麼 340
13.10 小結 342
第三部分 實踐
第14章 優秀(以及糟糕)的實踐 346
14.1 超越代碼 346
14.2 藉輪子 347
14.3 閤作愉快 348
14.4 為代碼插上翅膀 349
14.5 標準 350
14.6 Vagrant 350
14.7 測試 351
14.8 持續集成 351
14.9 小結 352
第15章 PHP標準 353
15.1 為什麼需要標準 353
15.2 什麼是PSR 354
15.2.1 為什麼選擇PSR 354
15.2.2 哪些人需要PSR 355
15.3 編碼風格 355
15.3.1 PSR-1基礎編碼規範 356
15.3.2 PSR-2編碼風格規範 358
15.3.3 檢查和修改代碼 360
15.4 PSR-4自動加載規範 362
15.5 小結 365
第16章 通過Composer使用和創建組件 366
16.1 什麼是Composer 366
16.2 安裝Composer 367
16.3 安裝一個(組)包 367
16.3.1 通過命令行安裝包 368
16.3.2 版本 368
16.3.3 require-dev元素 369
16.4 Composer與自動加載 370
16.5 創建自己的包 371
16.5.1 添加包信息 371
16.5.2 平颱軟件包 372
16.6 通過Packagist分發包 373
16.7 私有包 376
16.8 小結 377
第17章 用Git進行版本控製 378
17.1 為什麼進行版本控製 378
17.2 安裝Git 379
17.3 使用在綫Git代碼庫 380
17.4 配置Git服務器 382
17.5 啓動項目 384
17.6 更新與提交 387
17.7 文件和目錄的添加與移除 390
17.7.1 添加文件 390
17.7.2 刪除文件 390
17.7.3 添加目錄 391
17.7.4 刪除目錄 391
17.8 標記一次發布 392
17.9 創建分支 393
17.10 小結 398
第18章 使用PHPUnit進行測試 399
18.1 功能測試與單元測試 399
18.2 手動測試 400
18.3 引入PHPUnit 402
18.3.1 創建測試用例 402
18.3.2 斷言方法 405
18.3.3 測試異常 406
18.3.4 運行測試套件 407
18.3.5 約束 407
18.3.6 mock和stub 409
18.3.7 失敗是成功之母 412
18.4 編寫Web測試 415
18.4.1 為測試重構Web應用 415
18.4.2 簡單的Web測試 417
18.4.3 引入Selenium 419
18.5 警告 424
18.6 小結 426
第19章 使用Phing進行自動化構建 427
19.1 Phing是什麼 427
19.2 獲取和安裝Phing 428
19.3 編寫構建文檔 428
19.3.1 目標 430
19.3.2 屬性 432
19.3.3 類型 438
19.3.4 任務 443
19.4 小結 446
第20章 Vagrant 447
20.1 問題 447
20.2 設置 448
20.3 掛載本地目錄到Vagrant鏡像 450
20.4 配置 451
20.4.1 設置Web服務器 452
20.4.2 設置MySQL 452
20.4.3 配置主機名 453
20.5 結束語 455
20.6 小結 455
第21章 持續集成 456
21.1 什麼是持續集成 456
21.1.1 準備一個持續集成項目 458
21.1.2 安裝Jenkins插件 467
21.1.3 設置Git公鑰 468
21.1.4 創建新項目 469
21.1.5 運行第一次構建 472
21.1.6 配置報告 472
21.1.7 觸發構建 474
21.2 小結 476
第22章 對象、模式和實踐 477
22.1 對象 477
22.1.1 選擇 478
22.1.2 封裝與委托 478
22.1.3 解耦 478
22.1.4 可復用性 479
22.1.5 美學 479
22.2 模式 479
22.2.1 模式給我們帶來瞭什麼 480
22.2.2 模式與設計原則 480
22.3 實踐 482
22.3.1 測試 482
22.3.2 標準 483
22.3.3 版本控製 483
22.3.4 自動構建 483
22.3.5 持續集成 484
22.3.6 我們遺漏瞭什麼 484
22.4 小結 485
附錄A 參考文獻 486
附錄B 一個簡單的解析器 488
· · · · · · (
收起)
評分
☆☆☆☆☆
這本書太酷瞭,講得很全麵,非常適閤有點PHP基礎的同學去研究,最後的實踐非常棒。
評分
☆☆☆☆☆
這本書太酷瞭,講得很全麵,非常適閤有點PHP基礎的同學去研究,最後的實踐非常棒。
評分
☆☆☆☆☆
這本書太酷瞭,講得很全麵,非常適閤有點PHP基礎的同學去研究,最後的實踐非常棒。
評分
☆☆☆☆☆
對象的高級特性 中部模式 應用性很強 循序漸進的建立一個框架 後麵的實踐 DevOps Phing 自動化構建 PHP的一整套方案 都非常棒
評分
☆☆☆☆☆
對象的高級特性 中部模式 應用性很強 循序漸進的建立一個框架 後麵的實踐 DevOps Phing 自動化構建 PHP的一整套方案 都非常棒
評分
☆☆☆☆☆
设计模式一直以来很难懂,之前遇到很大的瓶颈,买回来这本书,读起来基本一目十行,不是因为内容太简单,而是该做的我都已经做过了,只是在模式上认识还不够清晰,概念体系不完整,所以想看书补补,觉得这本书设计模式部分写的非常好。甚至这本书应该只保留对象和设计模式部分...
評分
☆☆☆☆☆
根本没有办法往下看,先多敲敲代码再来看这本书吧,毕竟这些思想是不会过时的!!!介个豆瓣,还说我的评论太短,我去!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
評分
☆☆☆☆☆
设计模式一直以来很难懂,之前遇到很大的瓶颈,买回来这本书,读起来基本一目十行,不是因为内容太简单,而是该做的我都已经做过了,只是在模式上认识还不够清晰,概念体系不完整,所以想看书补补,觉得这本书设计模式部分写的非常好。甚至这本书应该只保留对象和设计模式部分...
評分
☆☆☆☆☆
每个段落先提出问题, 给出实现, 并讨论成效, 对于OO入门有一定帮助,能够帮助开拓思路,对OO老鸟有参考价值,可以换换空气,让脑子清空一下,听听别人说什么,对开发新程序有一定作用 内容并不能说新颖,毕竟内容已经是2007的了,不过设计模式并不会随着技术的改进而有多少变化,毕竟理...
評分
☆☆☆☆☆
根本没有办法往下看,先多敲敲代码再来看这本书吧,毕竟这些思想是不会过时的!!!介个豆瓣,还说我的评论太短,我去!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!