出版時(shí)間:2010-5 出版社:人民郵電出版社 作者:Matt Zandstra 頁數(shù):383 譯者:陳浩,吳孫濱,胡丹
Tag標(biāo)簽:無
前言
譯者從接觸PHP開發(fā)到現(xiàn)在接近十年,參加了不少大型互聯(lián)網(wǎng)應(yīng)用的開發(fā)。在此過程中,有幾個(gè)問題是譯者一直在關(guān)注的。中國互聯(lián)網(wǎng)發(fā)展如日中天,全國互聯(lián)網(wǎng)用戶數(shù)量增長很快(已達(dá)3.5億人)。當(dāng)前較為流行的站點(diǎn)往往每天要面對至少上百萬的訪問者,而且需要提供越來越復(fù)雜的服務(wù)。作為研發(fā)者的我們,應(yīng)該如何設(shè)計(jì)站點(diǎn),讓站點(diǎn)能滿足當(dāng)前階段的業(yè)務(wù)需求(訪問量和服務(wù)),并且保證網(wǎng)站有良好的架構(gòu)設(shè)計(jì),方便未來的后續(xù)開發(fā)和維護(hù)?我們應(yīng)該如何解決代碼的“耦合”問題,如何編寫出易重用的代碼,甚至達(dá)到理想化的軟件層面的“美學(xué)”境界(可能是程序員的終極目標(biāo))?如何建立一套行之有效的團(tuán)隊(duì)協(xié)作機(jī)制,使研發(fā)團(tuán)隊(duì)日常的開發(fā)標(biāo)準(zhǔn)化,提高團(tuán)隊(duì)溝通和合作的效率。是否有一些放之四海而皆準(zhǔn)的準(zhǔn)則或通用的工具可以利用?正所謂“水漲船高”,PHP這種為互聯(lián)網(wǎng)而生的編程語言這些年來也一直在進(jìn)步。如何充分利用PHP中的新特性,使日常的開發(fā)更為高效?讀者可以從本書中找到上述問題的部分答案。因?yàn)楸緯粌H僅是一本PHP圖書,更是一本鼓勵(lì)和促進(jìn)讀者超越代碼層次,對整個(gè)站點(diǎn)的“設(shè)計(jì)”進(jìn)行思考的書。條條大路通羅馬。要設(shè)計(jì)出漂亮又實(shí)用的站點(diǎn)架構(gòu),每個(gè)人也許都有自己的體會(huì)和經(jīng)驗(yàn)。但就PHP站點(diǎn)而言,從根本上不外乎“面向過程”和“面向?qū)ο蟆眱煞N比較底層的開發(fā)思路。面向過程的開發(fā)方式,每個(gè)人或每個(gè)團(tuán)隊(duì)都有自己的開發(fā)習(xí)慣,不太容易形成系統(tǒng)。所以這么多年來,雖然有不少優(yōu)秀的面向過程的PHP程序面世,但沒能形成任何可供共享的“框架”或“思想”。而面向?qū)ο蟮拈_發(fā)方式,則積累了大量公認(rèn)的模式和框架。從這個(gè)角度來說,建議讀者朋友多花時(shí)間在面向?qū)ο笤O(shè)計(jì)上。本書就“面向?qū)ο蟆痹赑HP中的實(shí)現(xiàn)做了非常深入的介紹,涵蓋了基礎(chǔ)、高級知識(shí)以及設(shè)計(jì)模式的實(shí)現(xiàn)。從學(xué)習(xí)角度來說,譯者推薦PHP程序員沿這樣的學(xué)習(xí)路線前進(jìn):PHP基礎(chǔ)入門(語法、常用函數(shù)和擴(kuò)展等)→面向?qū)ο蟮腜HP(本書就是很好的學(xué)習(xí)資料)→網(wǎng)站軟件架構(gòu)設(shè)計(jì)(設(shè)計(jì)模式、框架等)→網(wǎng)站物理層次架構(gòu)設(shè)計(jì)(分布式計(jì)算、存儲(chǔ)、負(fù)載均衡、高可用性等)。在現(xiàn)實(shí)當(dāng)中,上述這些階段和工作其實(shí)是交織在一起的。另外,程序設(shè)計(jì)之外的很多工具和實(shí)踐經(jīng)驗(yàn),也極其重要。因?yàn)閭€(gè)人的能力有限,個(gè)人的價(jià)值必須在團(tuán)隊(duì)和企業(yè)當(dāng)中得到體現(xiàn)。本書介紹的很多工具(如版本控制工具、文檔工具和應(yīng)用構(gòu)建工具等)都可以促進(jìn)團(tuán)隊(duì)協(xié)作。最后,真誠邀請讀者朋友通過本書來探索PHP。不論你是剛?cè)腴T的PHP開發(fā)人員,還是有多年經(jīng)驗(yàn)的同行,相信看完本書之后,你都會(huì)有收獲。當(dāng)然,一個(gè)真正的程序員,他的思想永遠(yuǎn)是超越具體語言和工具的。期待有一天,讀者朋友可以在了解書中這些知識(shí)的基礎(chǔ)上,總結(jié)出屬于自己的更加優(yōu)秀的開發(fā)框架甚至是設(shè)計(jì)思想,開發(fā)出在互聯(lián)網(wǎng)上受到用戶歡迎的優(yōu)秀站點(diǎn)。
內(nèi)容概要
《深入PHP:面向?qū)ο蟆⒛J脚c實(shí)踐(第2版)》是PHP專家經(jīng)典力作的最新版本。書中主要介紹了如何使用面向?qū)ο蠹夹g(shù)和設(shè)計(jì)模式編寫穩(wěn)定的、可維護(hù)的代碼,如何使用強(qiáng)大的phpDocumentor自動(dòng)文檔系統(tǒng)創(chuàng)建詳細(xì)的多功能文檔,如何通過管理CVS中的代碼和使用Phing構(gòu)建系統(tǒng)在開發(fā)過程中得到更好的靈活性,以及如何使用PEAR包管理解決方案?! 渡钊隤HP:面向?qū)ο蟆⒛J脚c實(shí)踐(第2版)》適合中高級PHP程序員閱讀。
作者簡介
贊德斯徹(MartZandstra),Yahoo公司的高級程序員,曾從事過教師等工作,著有SamsTeachYourselfPHPin24Hours等書。
書籍目錄
第一部分 介紹 第1章 PHP:設(shè)計(jì)與管理 2 1.1 問題 2 1.2 PHP和其他語言 3 1.3 關(guān)于本書 5 1.3.1 對象 5 1.3.2 模式 5 1.3.3 實(shí)踐 6 1.3.4 本書第2版中的新內(nèi)容 7 1.4 小結(jié) 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 擁護(hù)和疑慮:關(guān)于對象的爭辯 13 2.4 小結(jié) 13 第3章 對象基礎(chǔ) 14 3.1 類和對象 14 3.1.1 編寫第一個(gè)類 14 3.1.2 第一個(gè)對象(或兩個(gè)) 15 3.2 設(shè)置類中的屬性 15 3.3 使用方法 18 3.4 參數(shù)和類型 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 小結(jié) 35 第4章 高級特性 36 4.1 靜態(tài)方法和屬性 36 4.2 常量屬性 39 4.3 抽象類 39 4.4 接口 41 4.5 錯(cuò)誤處理 43 4.6 Final類和方法 48 4.7 使用攔截器 49 4.8 析構(gòu)方法 53 4.9 使用__clone()復(fù)制對象 54 4.10 定義對象的字符串值 56 4.11 小結(jié) 57 第5章 對象工具 58 5.1 PHP和包 58 5.1.1 PHP和命名空間 60 5.1.2 包含路徑 62 5.1.3 自動(dòng)加載 63 5.2 類函數(shù)和對象函數(shù) 64 5.2.1 查找類 64 5.2.2 了解對象或類 65 5.2.3 了解類中的方法 66 5.2.4 了解類屬性 67 5.2.5 了解繼承 67 5.2.6 方法調(diào)用 68 5.3 反射API 69 5.3.1 入門 69 5.3.2 開始行動(dòng) 69 5.3.3 檢查類 71 5.3.4 檢查方法 72 5.3.5 檢查方法參數(shù) 74 5.3.6 使用反射API 75 5.4 小結(jié) 78 第6章 對象與設(shè)計(jì) 79 6.1 代碼設(shè)計(jì)的定義 79 6.2 面向?qū)ο笤O(shè)計(jì)和過程式編程 80 6.2.1 職責(zé) 83 6.2.2 內(nèi)聚 83 6.2.3 耦合 83 6.2.4 正交 84 6.3 選擇類 84 6.4 多態(tài) 85 6.5 封裝 86 6.6 忘記細(xì)節(jié) 87 6.7 四個(gè)方向標(biāo) 88 6.7.1 代碼重復(fù) 88 6.7.2 類知道的太多 88 6.7.3 萬能的類 88 6.7.4 條件語句 89 6.8 UML 89 6.8.1 類圖 89 6.8.2 時(shí)序圖 94 6.9 小結(jié) 95 第三部分 模式 第7章 什么是設(shè)計(jì)模式?為何使用它們 98 7.1 什么是設(shè)計(jì)模式 98 7.2 設(shè)計(jì)模式概覽 100 7.2.1 命名 100 7.2.2 問題 100 7.2.3 解決方案 101 7.2.4 效果 101 7.3 《設(shè)計(jì)模式》格式 101 7.4 為什么使用設(shè)計(jì)模式 102 7.4.1 一個(gè)設(shè)計(jì)模式定義了一個(gè)問題 102 7.4.2 一個(gè)設(shè)計(jì)模式定義了一個(gè)解決方案 102 7.4.3 設(shè)計(jì)模式是語言無關(guān)的 102 7.4.4 模式定義了一組詞匯 102 7.4.5 模式是經(jīng)過測試的 103 7.4.6 模式是為協(xié)作而設(shè)計(jì)的 103 7.4.7 設(shè)計(jì)模式促進(jìn)良好設(shè)計(jì) 103 7.5 PHP與設(shè)計(jì)模式 103 7.6 小結(jié) 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 針對接口編程,而不是針對實(shí)現(xiàn)編程 112 8.5 變化的概念 113 8.6 父子關(guān)系 113 8.7 模式 114 8.7.1 用于生成對象的模式 114 8.7.2 用于組織對象和類的模式 114 8.7.3 面向任務(wù)的模式 114 8.7.4 企業(yè)模式 114 8.7.5 數(shù)據(jù)庫模式 114 8.8 小結(jié) 115 第9章 生成對象 116 9.1 生成對象的問題和解決方法 116 9.2 單例模式 119 9.2.1 問題 120 9.2.2 實(shí)現(xiàn) 120 9.2.3 結(jié)果 122 9.3 工廠方法模式 122 9.3.1 問題 122 9.3.2 實(shí)現(xiàn) 125 9.3.3 結(jié)果 126 9.4 抽象工廠模式 127 9.4.1 問題 127 9.4.2 實(shí)現(xiàn) 128 9.4.3 結(jié)果 129 9.4.4 原型模式 131 9.4.5 問題 132 9.4.6 實(shí)現(xiàn) 133 9.5 某些模式的騙術(shù) 134 9.6 小結(jié) 136 第10章 讓面向?qū)ο缶幊谈屿`活的模式 137 10.1 構(gòu)造可靈活創(chuàng)建對象的類 137 10.2 組合模式 137 10.2.1 問題 138 10.2.2 實(shí)現(xiàn) 139 10.2.3 效果 143 10.2.4 組合模式小結(jié) 146 10.3 裝飾模式 146 10.3.1 問題 146 10.3.2 實(shí)現(xiàn) 148 10.3.3 效果 151 10.4 外觀模式 151 10.4.1 問題 152 10.4.2 實(shí)現(xiàn) 153 10.4.3 效果 153 10.5 小結(jié) 154 第11章 執(zhí)行及描述任務(wù) 155 11.1 解釋器模式 155 11.1.1 問題 155 11.1.2 實(shí)現(xiàn) 156 11.1.3 解釋器的問題 162 11.2 策略模式 163 11.2.1 問題 163 11.2.2 實(shí)現(xiàn) 164 11.3 觀察者模式 167 11.4 訪問者模式 173 11.4.1 問題 174 11.4.2 實(shí)現(xiàn) 175 11.4.3 訪問者模式的問題 178 11.5 命令模式 179 11.5.1 問題 179 11.5.2 實(shí)現(xiàn) 179 11.6 小結(jié) 183 第12章 企業(yè)模式 184 12.1 架構(gòu)概述 184 12.1.1 模式 184 12.1.2 應(yīng)用程序和層 185 12.2 企業(yè)架構(gòu)之外的基礎(chǔ)模式 187 12.2.1 注冊表 187 12.2.2 實(shí)現(xiàn) 188 12.3 表現(xiàn)層 196 12.3.1 前端控制器 196 12.3.2 應(yīng)用控制器 205 12.3.3 頁面控制器 214 12.3.4 模板視圖和視圖助手 218 12.4 業(yè)務(wù)邏輯層 220 12.4.1 事務(wù)腳本 221 12.4.2 領(lǐng)域模型 225 12.5 小結(jié) 227 第13章 數(shù)據(jù)庫模式 228 13.1 數(shù)據(jù)層 228 13.2 數(shù)據(jù)映射器 228 13.2.1 問題 229 13.2.2 實(shí)現(xiàn) 229 13.2.3 效果 239 13.3 標(biāo)識(shí)映射 239 13.3.1 問題 240 13.3.2 實(shí)現(xiàn) 240 13.3.3 效果 242 13.4 工作單元 243 13.4.1 問題 243 13.4.2 實(shí)現(xiàn) 243 13.4.3 效果 246 13.4.4 延遲加載 247 13.4.5 問題 247 13.4.6 實(shí)現(xiàn) 247 13.4.7 效果 249 13.5 領(lǐng)域?qū)ο蠊S 249 13.5.1 問題 249 13.5.2 實(shí)現(xiàn) 249 13.5.3 效果 250 13.6 標(biāo)識(shí)對象 252 13.6.1 問題 252 13.6.2 實(shí)現(xiàn) 252 13.6.3 效果 256 13.7 選擇工廠和更新工廠模式 257 13.7.1 問題 257 13.7.2 實(shí)現(xiàn) 257 13.7.3 效果 259 13.8 數(shù)據(jù)映射器中剩下些什么 260 13.9 小結(jié) 262 第四部分 實(shí)踐 第14章 良好和糟糕的實(shí)踐 264 14.1 超越代碼 264 14.2 借一個(gè)輪子 264 14.3 合作愉快 266 14.4 為你的代碼插上雙翼 267 14.5 文檔 267 14.6 測試 268 14.7 小結(jié) 269 第15章 PEAR 270 15.1 什么是PEAR 270 15.2 安裝PEAR包 271 15.3 使用PEAR包 273 15.4 創(chuàng)建自己的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進(jìn)行靈活的自定義安裝 283 15.4.6 發(fā)布包 284 15.4.7 創(chuàng)建自己的PEAR頻道 284 15.5 小結(jié) 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 在文檔中創(chuàng)建鏈接 297 16.10 小結(jié) 300 第17章 使用CVS進(jìn)行版本控制 301 17.1 為什么要使用版本控制 301 17.2 獲得CVS 302 17.3 配置CVS代碼庫 303 17.3.1 創(chuàng)建代碼庫 303 17.3.2 配置客戶端 304 17.3.3 在多臺(tái)機(jī)器上運(yùn)行CVS 304 17.4 開始項(xiàng)目 305 17.5 更新和提交 307 17.6 增加和刪除文件及目錄 309 17.6.1 添加文件 309 17.6.2 刪除文件 310 17.6.3 添加目錄 310 17.6.4 添加二進(jìn)制文件 311 17.6.5 刪除目錄 311 17.7 標(biāo)記和導(dǎo)出項(xiàng)目 312 17.7.1 標(biāo)記項(xiàng)目 313 17.7.2 通過標(biāo)簽獲取項(xiàng)目代碼 313 17.7.3 導(dǎo)出項(xiàng)目 314 17.8 創(chuàng)建項(xiàng)目分支 314 17.9 小結(jié) 317 第18章 使用PHPUnit進(jìn)行測試 318 18.1 功能測試與單元測試 318 18.2 手工測試 319 18.3 引入PHPUnit 321 18.3.1 創(chuàng)建測試用例 321 18.3.2 斷言方法 322 18.3.3 測試異常 323 18.3.4 運(yùn)行測試套件 324 18.3.5 約束 326 18.3.6 模擬與樁 328 18.3.7 失敗是成功之母 331 18.4 警告 333 18.5 小結(jié) 335 第19章 用Phing實(shí)現(xiàn)項(xiàng)目的自動(dòng) 構(gòu)建 336 19.1 什么是Phing 336 19.2 獲取和安裝Phing 337 19.3 編寫build文檔 337 19.3.1 目標(biāo) 339 19.3.2 屬性 340 19.3.3 類型 345 19.3.4 任務(wù) 348 19.4 小結(jié) 352 第五部分 結(jié)論 第20章 對象、模式與實(shí)踐 354 20.1 對象 354 20.1.1 選擇 355 20.1.2 封裝和委托 355 20.1.3 解耦 355 20.1.4 復(fù)用性 356 20.1.5 美學(xué) 356 20.2 模式 356 20.2.1 模式給我們帶來了什么 357 20.2.2 模式和設(shè)計(jì)原則 357 20.3 實(shí)踐 359 20.3.1 測試 359 20.3.2 文檔 359 20.3.3 版本控制 360 20.3.4 自動(dòng)構(gòu)建 360 20.3.5 我們還遺漏了什么 360 20.4 小結(jié) 361 第六部分 附錄 附錄A 參考文獻(xiàn) 364 附錄B 簡單的解析器 366
章節(jié)摘錄
插圖:
媒體關(guān)注與評論
“本書正是為PHP企業(yè)級開發(fā)人員和軟件工程師量身打造的經(jīng)典著作,每一位想提高技能的PHP開發(fā)人員都應(yīng)閱讀?!薄 狵enGuest,愛爾蘭PHP用戶組主席,PEARQA團(tuán)隊(duì)和PEAR組的成員“這是我讀過的PHP書中最好的一本,它介紹了PHP面向?qū)ο缶幊痰姆椒矫婷妗N易詫W(xué)PHP已經(jīng)5年了,我的大多數(shù)問題都能在這本書中找到答案。強(qiáng)烈推薦那些有一定PHP經(jīng)驗(yàn)并想更上一層樓的程序員閱讀?!薄 狝mazon.com讀者評論
編輯推薦
《深入PHP:面向?qū)ο?、模式與實(shí)踐(第2版)》全面深入地剖析了面向?qū)ο蟮腜HP編程與設(shè)計(jì)。首先介紹了PHP的OO特性,包括類聲明、對象實(shí)例化、繼承、方法與屬性封裝以及靜態(tài)方法與屬性、抽象類、接口、異常處理、對象克隆等高級主題。然后介紹了設(shè)計(jì)模式,闡述了模式的概念,展示了如何在PHP中實(shí)現(xiàn)幾個(gè)關(guān)鍵的模式,用專門的章節(jié)介紹了企業(yè)模式和數(shù)據(jù)庫模式?!渡钊隤HP:面向?qū)ο?、模式與實(shí)踐(第2版)》最后一部分圍繞PHP應(yīng)用程序開發(fā),詳細(xì)介紹了一批極為實(shí)用的輔助開發(fā)工具,討論了具有普遍意義的最佳開發(fā)實(shí)踐?!渡钊隤HP:面向?qū)ο?、模式與實(shí)踐(第2版)》適合每位PHP程序員進(jìn)階參考,幫助他們掌握PHP面向?qū)ο笤O(shè)計(jì)和開發(fā)的精髓,躋身高端PHP程序員之列。Web開發(fā)系列世界級專家力作完美結(jié)合面向?qū)ο笏枷肱cPHP技術(shù)PHP模塊化編程必讀
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載
深入PHP:面向?qū)ο?、模式與實(shí)踐(第2版) PDF格式下載