注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)網(wǎng)絡(luò)編程PHP實(shí)戰(zhàn)

PHP實(shí)戰(zhàn)

PHP實(shí)戰(zhàn)

定 價:¥69.00

作 者: (挪)雷勒索,(英)貝克,(美)史夫利特 著,張穎 等譯
出版社: 人民郵電出版社
叢編項(xiàng): 圖靈程序設(shè)計(jì)叢書
標(biāo) 簽: PHP

ISBN: 9787115217455 出版時間: 2010-01-01 包裝: 平裝
開本: 16開 頁數(shù): 428 字?jǐn)?shù):  

內(nèi)容簡介

  隨著 PHP 5的發(fā)布和 Zend框架項(xiàng)目的應(yīng)用,PHP和敏捷思想、設(shè)計(jì)模式以及單元測試的聯(lián)姻成為主流話題?!禤HP實(shí)戰(zhàn)》首先介紹了面向?qū)ο笤O(shè)計(jì)的原則、模式和技巧,然后講述了如何在 PHP上利用其語法和特性,處理和實(shí)施這些原則、模式和技巧,并應(yīng)用于 Web編程中遇到的難題上?!禤HP實(shí)戰(zhàn)》適合所有使用 PHP開發(fā) Web應(yīng)用程序的人員閱讀。

作者簡介

  雷勒索(Dagfinn Reiersφl),資深軟件專家。有10多年的從業(yè)經(jīng)驗(yàn),設(shè)計(jì)并開發(fā)了Web應(yīng)用程序、Web內(nèi)容挖掘軟件、Web編程工具以及文本分析程序。其中絕大多數(shù)都是運(yùn)用PHP編寫的。他居住在挪威奧斯陸。貝克(Marcus Baker),資深軟件專家。多年來一直從事面向?qū)ο笤O(shè)計(jì)和開發(fā)以及Web程序開發(fā)和測試方面的工作。他同時也是PHP Architectecture Magazine的專欄作家。史夫利特(Chris Shiflett),PHP軟件專家、安全專家以及PHP社區(qū)的領(lǐng)軍人物。他是PHP安全協(xié)會的奠基者,著有HTTPDeveloper,S Handbook和Essential PHP Security兩本圖書。

圖書目錄

第一部分 工具和概念
第1章 PHP與現(xiàn)代軟件開發(fā)  2
1.1 PHP的作用  2
1.1.1 PHP流行的原因  3
1.1.2 克服PHP的局限  5
1.2 語言、原則和模式  7
1.2.1 敏捷方法:從蠻干到巧干  7
1.2.2 PHP  5和軟件趨勢  8
1.2.3 面向?qū)ο缶幊踢M(jìn)化的規(guī)律  8
1.2.4 設(shè)計(jì)模式  9
1.2.5 重構(gòu)  10
1.2.6 單元測試和TDD  10
1.3 小結(jié)  13
第2章 PHP中的對象  14
2.1 對象基礎(chǔ)  14
2.1.1 為什么將PHP與Java相比較  15
2.1.2 對象和類  15
2.1.3 Hello  world  15
2.1.4 構(gòu)造函數(shù):創(chuàng)建和初始化對象  16
2.1.5 繼承和關(guān)鍵字extends  18
2.1.6 繼承構(gòu)造函數(shù)  19
2.2 異常處理  20
2.2.1 異常的工作原理  20
2.2.2 何時使用異常與返回代碼  22
2.2.3 創(chuàng)建自己的異常類  23
2.2.4 用異常替換PHP內(nèi)置的嚴(yán)重錯誤  24
2.2.5 不要過度使用異?!?24
2.3 PHP 4和PHP 5中的對象引用  24
2.3.1 對象引用的工作原理  25
2.3.2 對象引用的優(yōu)勢  26
2.3.3 引用何時沒有用處  27
2.4 方法調(diào)用的攔截和類的實(shí)例化  27
2.4.1 什么是方法重載  27
2.4.2 PHP中的Java式方法重載  27
2.4.3 面向方面的體驗(yàn):記錄方法調(diào)用的日志  28
2.4.4 自動加載類  30
2.5 小結(jié)  31
第3章 有效使用PHP類  32
3.1 可見性:私有和受保護(hù)的方法與變量  32
3.1.1 對方法可見性的要求  33
3.1.2 何時使用私有方法  34
3.1.3 何時使用受保護(hù)方法  34
3.1.4 讓實(shí)例變量保持private或protected屬性  35
3.1.5 私有變量和受保護(hù)變量的存取  36
3.1.6 兩全其美——通過攔截來控制變量  37
3.1.7 final類和方法  38
3.2 沒有對象的類:類方法、類變量和類常量  39
3.2.1 類(靜態(tài))方法  40
3.2.2 何時使用類方法  41
3.2.3 類變量  41
3.2.4 類常量  42
3.2.5 PHP中常量的限制  43
3.3 抽象類和方法(函數(shù))  45
3.3.1 什么是抽象類和方法  45
3.3.2 使用抽象類  45
3.4 類的類型提示  46
3.4.1 類型提示的作用  46
3.4.2 何時使用類型提示  47
3.5 接口  48
3.5.1 什么是接口  49
3.5.2 PHP中需要接口嗎  49
3.5.3 用接口讓設(shè)計(jì)更清晰  50
3.5.4 用接口改善類的類型提示  50
3.5.5 PHP  5與Java中的接口  51
3.6 小結(jié)  52
第4章 理解對象和類  53
4.1 對象和類的優(yōu)點(diǎn)  54
4.1.1 類幫助組織  54
4.1.2 可以告訴對象要做什么  55
4.1.3 多態(tài)性  55
4.1.4 對象讓代碼更易讀  56
4.1.5 類幫助消除重復(fù)性代碼  59
4.1.6 可以重用對象和類  60
4.1.7 避免牽一發(fā)而動全身  61
4.1.8 對象提供類型安全  61
4.2 好設(shè)計(jì)的標(biāo)準(zhǔn)  62
4.2.1 不要混淆結(jié)果和含義  64
4.2.2 透明性  64
4.2.3 簡單設(shè)計(jì)  64
4.2.4 一次并且只有一次  65
4.3 什么是對象  67
4.3.1 對象來自虛構(gòu)世界  67
4.3.2 域?qū)ο蠡A(chǔ)  68
4.4 小結(jié)  70
第5章 理解類關(guān)系  71
5.1 繼承  71
5.1.1 將繼承作為思考工具  72
5.1.2 繼承重構(gòu)  73
5.2 對象組合  77
5.3 接口  79
5.3.1 將接口作為思考工具  79
5.3.2 單繼承和多繼承  80
5.4 優(yōu)先考慮對象組合而不是類繼承  80
5.4.1 避免父類命名含糊  81
5.4.2 避免繼承層次結(jié)構(gòu)過深  81
5.5 小結(jié)  82
第6章 面向?qū)ο笤瓌t  83
6.1 原則和模式  84
6.1.1 架構(gòu)原則或模式  84
6.1.2 了解面向?qū)ο笤瓌t  85
6.2 開放-封閉原則(OCP)  85
6.2.1 初識OCP  85
6.2.2 用類替換的情況  86
6.2.3 OCP在PHP中是如何相關(guān)的  88
6.3 單一職責(zé)原則(SRP)  88
6.3.1 混合職責(zé):模板引擎  89
6.3.2 一個試驗(yàn):分離職責(zé)  91
6.3.3 實(shí)驗(yàn)是否成功  93
6.4 依賴倒置原則(DIP)  94
6.4.1 什么是依賴性  94
6.4.2 插入接口  96
6.5 分層設(shè)計(jì)  96
6.5.1 “三層”模式及其同屬  97
6.5.2 Web應(yīng)用程序能否有域?qū)印?98
6.6 小結(jié)  99
第7章 設(shè)計(jì)模式  100
7.1 策略模式  101
7.1.1 使用策略模式的“Hello  world”  101
7.1.2 策略模式的用處  103
7.2 適配器模式  104
7.2.1 初學(xué)適配器模式  104
7.2.2 讓一個模板引擎與另一個相像  105
7.2.3 具有多個類的適配器模式  106
7.2.4 調(diào)整為通用接口  109
7.3 裝飾器模式  109
7.3.1 資源裝飾器  110
7.3.2 裝飾與再裝飾  111
7.4 空對象模式  113
7.4.1 混合黑暗的燈和明亮的燈  114
7.4.2 空策略對象  114
7.5 迭代器模式  115
7.5.1 迭代器的工作原理  115
7.5.2 使用迭代器的好原因  116
7.5.3 迭代器與普通數(shù)組  116
7.5.4 SPL迭代器  117
7.5.5 SPL如何幫助我們解決迭代器和數(shù)組間的沖突  118
7.6 組合模式  118
7.6.1 用組合模式實(shí)現(xiàn)菜單  118
7.6.2 基本理論  120
7.6.3 連貫接口  121
7.6.4 遞歸處理  121
7.6.5 我們的方法低效嗎  123
7.7 小結(jié)  123
第8章 設(shè)計(jì)指南:日期和時間處理  124
8.1 為何日期和時間處理要面向?qū)ο蟆?124
8.1.1 更容易,但并非更簡單  125
8.1.2 面向?qū)ο蟮膬?yōu)勢  125
8.2 找到正確的抽象  126
8.2.1 單個時間表示法:時間點(diǎn)、Instant、DateAndTime  126
8.2.2 不同類別的時間范圍:期間、持續(xù)時間、日期范圍、時間間隔  127
8.3 高級對象構(gòu)建  128
8.3.1 使用創(chuàng)建方法  128
8.3.2 多個構(gòu)造函數(shù)  129
8.3.3 使用工廠類  132
8.4 大型結(jié)構(gòu)  133
8.4.1 包的概念  133
8.4.2 命名空間和包  134
8.4.3 PHP缺少命名空間支持  135
8.4.4 處理名稱沖突  135
8.5 使用值對象  140
8.5.1 對象引用帶來的麻煩  141
8.5.2 實(shí)現(xiàn)值對象  142
8.5.3 更改不可變的對象  142
8.6 實(shí)現(xiàn)基本類  143
8.6.1 DateAndTime  143
8.6.2 屬性和字段  144
8.6.3 期間  149
8.6.4 時間間隔  151
8.7 小結(jié)  151
第二部分 測試和重構(gòu)
第9章 測試驅(qū)動開發(fā)  154
9.1 過程形成質(zhì)量  155
9.1.1 本示例的需求  155
9.1.2 報(bào)告測試結(jié)果  156
9.2 從數(shù)據(jù)庫取數(shù)  157
9.2.1 基本測試  157
9.2.2 第一個真正的測試  158
9.2.3 通過測試  160
9.2.4 讓代碼運(yùn)行  161
9.2.5 測試直到確信沒有問題  163
9.3 數(shù)據(jù)庫插入和更新  164
9.3.1 讓測試更易讀  165
9.3.2 紅,綠,重構(gòu)  166
9.4 真正的數(shù)據(jù)庫事務(wù)處理  168
9.4.1 測試事務(wù)處理  168
9.4.2 實(shí)現(xiàn)事務(wù)處理  170
9.4.3 調(diào)試的終結(jié)  171
9.4.4 測試是工具,不是替代品  171
9.5 小結(jié)  172
第10章 高級測試技術(shù)  173
10.1 具有持久化功能的聯(lián)系人管理器  174
10.1.1 運(yùn)行多個測試用例  174
10.1.2 測試聯(lián)系人的持久化  175
10.1.3 Contact和ContactFinder類  177
10.1.4 setUp()和tearDown()  178
10.1.5 最終版本  179
10.2 向聯(lián)系人發(fā)送郵件  180
10.2.1 設(shè)計(jì)Mailer類及其測試環(huán)境  180
10.2.2 手工編寫模擬對象  181
10.2.3 更為完善的模擬對象  182
10.2.4 自頂向下測試  183
10.2.5 模擬的局限性  184
10.3 虛擬的郵件服務(wù)器  185
10.3.1 安裝fakemail  186
10.3.2 郵件測試  187
10.3.3 網(wǎng)關(guān)作為適配器  190
10.4 小結(jié)  190
第11章 重構(gòu)Web應(yīng)用程序  192
11.1 真實(shí)世界中的重構(gòu)  193
11.1.1 早期重構(gòu)和后期重構(gòu)  193
11.1.2 重構(gòu)與重新實(shí)現(xiàn)  194
11.2 重構(gòu)基礎(chǔ):可讀性和重復(fù)性代碼  195
11.2.1 提高可讀性  195
11.2.2 消除重復(fù)性代碼  197
11.3 分離標(biāo)記與程序代碼  199
11.3.1 分離何以有用  200
11.3.2 合宜使用CSS  200
11.3.3 清理生成鏈接的函數(shù)  201
11.3.4 在SimpleTest中引入模板  205
11.4 簡化條件表達(dá)式  209
11.4.1 簡單示例  210
11.4.2 稍長的示例:身份驗(yàn)證代碼  211
11.4.3 處理?xiàng)l件HTML  216
11.5 從面向過程到面向?qū)ο蟮闹貥?gòu)  217
11.5.1 測試面向過程代碼  217
11.5.2 進(jìn)行重構(gòu)  218
11.6 小結(jié)  221
第12章 用Web測試控制  222
12.1 再看聯(lián)系人管理器  223
12.1.1 樣板  223
12.1.2 創(chuàng)建Web測試  225
12.1.3 用虛擬網(wǎng)頁交互通過測試  226
12.1.4 一次編寫,到處測試  227
12.2 可工作的表單  229
12.2.1 嘗試將聯(lián)系人保存到數(shù)據(jù)庫中  230
12.2.2 創(chuàng)建數(shù)據(jù)庫  231
12.2.3 為查找器創(chuàng)建存根  232
12.3 質(zhì)量保證  234
12.3.1 讓聯(lián)系人管理器可以進(jìn)行單元測試  234
12.3.2 從用例到驗(yàn)收測試  236
12.4 可怕的遺留代碼  238
12.5 小結(jié)  242
第三部分 構(gòu)建Web界面
第13章 使用模板管理Web表現(xiàn)層  244
13.1 分離表現(xiàn)層和域邏輯  244
13.1.1 分離還是不分離……  245
13.1.2 為什么使用模板  245
13.2 哪個模板引擎  247
13.2.1 普通PHP  248
13.2.2 定制語法:Smarty  249
13.2.3 屬性語言:PHPTAL  251
13.3 轉(zhuǎn)換:XSLT  254
13.3.1 “XML化”網(wǎng)頁  255
13.3.2 設(shè)置XSLT  256
13.3.3 XSLT樣式表  256
13.3.4 從PHP運(yùn)行XSLT  258
13.4 將邏輯與模板分離  259
13.4.1 視圖協(xié)助器  260
13.4.2 交替行顏色  260
13.4.3 處理日期和時間格式  261
13.4.4 生成層級顯示  263
13.4.5 防止從模板更新  265
13.5 模板和安全  266
13.5.1 PHPTAL  266
13.5.2 Smarty  267
13.5.3 XSLT  267
13.6 小結(jié)  267
第14章 構(gòu)建復(fù)雜網(wǎng)頁  269
14.1 組合模板(復(fù)合視圖)  269
14.1.1 復(fù)合視圖:一個或多個設(shè)計(jì)模式  269
14.1.2 復(fù)合數(shù)據(jù)和復(fù)合模板  270
14.2 實(shí)現(xiàn)直觀的復(fù)合視圖  270
14.2.1 我們的目標(biāo)  270
14.2.2 使用Smarty  272
14.2.3 使用PHPTAL  273
14.2.4 使用PHPTAL的頁面宏  274
14.3 復(fù)合視圖示例  275
14.3.1 制作打印友好的頁面  276
14.3.2 將現(xiàn)有應(yīng)用程序集成到復(fù)合視圖中  277
14.3.3 多方顯示站點(diǎn)和Fowler的兩步視圖  278
14.4 小結(jié)  280
第15章 用戶交互  281
15.1 MVC體系結(jié)構(gòu)  282
15.1.1 撥開MVC的迷霧  283
15.1.2 定義基本概念  284
15.1.3 命令還是操作  286
15.1.4 Web  MVC不是富客戶MVC  286
15.2 Web命令模式  287
15.2.1 工作原理  288
15.2.2 命令標(biāo)識符  288
15.2.3 Web處理程序  289
15.2.4 命令執(zhí)行器  289
15.3 保持實(shí)現(xiàn)簡單  290
15.3.1 示例:“原生的”Web應(yīng)用程序  290
15.3.2 引入命令函數(shù)  292
15.4 小結(jié)  294
第16章 控制器  296
16.1 控制器和請求對象  297
16.1.1 基本請求對象  297
16.1.2 安全問題  298
16.2 使用頁面控制器  299
16.2.1 簡單示例  300
16.2.2 從頁面控制器選擇視圖  301
16.2.3 讓命令可進(jìn)行單元測試  302
16.2.4 避免HTML輸出  303
16.2.5 使用模板  303
16.2.6 重定向問題  304
16.3 構(gòu)建前端控制器  307
16.3.1 一個命令一個類的Web處理程序  307
16.3.2 命令還需要些什么  308
16.3.3 使用命令組  309
16.3.4 有多個提交按鈕的表單  310
16.3.5 用JavaScript生成命令  311
16.3.6 用于復(fù)合視圖的控制器  311
16.4 小結(jié)  312
第17章 輸入驗(yàn)證  314
17.1 應(yīng)用程序設(shè)計(jì)中的輸入驗(yàn)證  315
17.1.1 驗(yàn)證和應(yīng)用程序體系結(jié)構(gòu)  315
17.1.2 驗(yàn)證策略  316
17.1.3 命名表單組件  317
17.2 服務(wù)器端驗(yàn)證及其問題  317
17.2.1 重復(fù)問題  318
17.2.2 樣式問題  318
17.2.3 測試和頁面導(dǎo)航問題  319
17.2.4 我們能解決多少問題  319
17.3 客戶端驗(yàn)證  320
17.3.1 普通的乏味的客戶端驗(yàn)證  320
17.3.2 逐個驗(yàn)證字段  321
17.3.3 你做不到這一點(diǎn)  323
17.3.4 表單  326
17.4 面向?qū)ο蟮姆?wù)器端驗(yàn)證  327
17.4.1 規(guī)則和驗(yàn)證程序  328
17.4.2 安全的請求對象體系結(jié)構(gòu)  329
17.4.3 現(xiàn)在驗(yàn)證非常簡單  333
17.4.4 讓其變得簡單的類  334
17.4.5 使用Specification對象  336
17.4.6 知識豐富的設(shè)計(jì)  339
17.4.7 向外觀添加驗(yàn)證  340
17.5 同步服務(wù)器端和客戶端驗(yàn)證  341
17.5.1 表單生成器  342
17.5.2 配置文件  342
17.5.3 從客戶端驗(yàn)證生成服務(wù)器端驗(yàn)證  343
17.6 小結(jié)  343
第18章 表單處理  345
18.1 用HTML_QuickForm設(shè)計(jì)解決方案  345
18.1.1 最小需求和設(shè)計(jì)  346
18.1.2 將生成的元素放到HTML表單中  346
18.1.3 找到抽象  347
18.1.4 更為具體的需求  348
18.1.5 選擇問題  349
18.2 實(shí)現(xiàn)解決方案  350
18.2.1 包裝HTML_QuickForm元素  350
18.2.2 輸入控件  351
18.2.3 哪個類創(chuàng)建表單控件  354
18.2.4 驗(yàn)證  355
18.2.5 在模板中使用表單對象  357
18.2.6 下一步做什么  359
18.3 小結(jié)  359
第19章 數(shù)據(jù)庫連接、抽象和配置  361
19.1 數(shù)據(jù)庫抽象  362
19.1.1 預(yù)處理語句  362
19.1.2 面向?qū)ο蟮臄?shù)據(jù)庫查詢  364
19.2 裝飾和適配數(shù)據(jù)庫資源對象  366
19.2.1 簡單的可配置數(shù)據(jù)庫連接  366
19.2.2 從結(jié)果集制作與SPL兼容的迭代器  367
19.3 讓數(shù)據(jù)庫連接可用  369
19.3.1 單例和類似模式  370
19.3.2 服務(wù)定位器和注冊表  371
19.4 小結(jié)  373
第四部分 數(shù)據(jù)庫和基礎(chǔ)結(jié)構(gòu)
第20章 對象和SQL  376
20.1 對象-關(guān)系阻抗不匹配  376
20.2 封裝和隱藏SQL  378
20.2.1 基本示例  378
20.2.2 在SQL語句中替換字符串  379
20.3 通用化SQL  383
20.3.1 列的列表和表名  383
20.3.2 使用SQL別名  386
20.3.3 生成INSERT、UPDATE和DELETE語句  386
20.3.4 查詢對象  390
20.3.5 適用的設(shè)計(jì)模式  391
20.4 小結(jié)  391
第21章 數(shù)據(jù)類設(shè)計(jì)  392
21.1 最簡單的方法  392
21.1.1 用Finder類檢索數(shù)據(jù)  393
21.1.2 主要程序:表數(shù)據(jù)網(wǎng)關(guān)  395
21.2 讓對象自身持久化  400
21.2.1 自我持久化的查找器  401
21.2.2 讓對象存儲自己  405
21.3 數(shù)據(jù)映射器模式  406
21.3.1 數(shù)據(jù)映射器和DAO  406
21.3.2 這些模式無甚差別  408
21.3.3 模式小結(jié)  409
21.4 實(shí)際使用效果  409
21.4.1 模式在典型Web應(yīng)用程序中的效果  410
21.4.2 優(yōu)化查詢  411
21.5 小結(jié)  411
附錄A 測試工具和小技巧  412
附錄B 安全  420
參考文獻(xiàn)  429

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號