# <center>前言</center>
PHP是目前的主流編程技術。我們可以看到大量的PHP網站以及大量有關PHP的工作機會,還可以看到許多大型公司都使用這種開放源代碼語言來支持其業務。這種最初毫不起眼的開放源代碼語言如今已廣泛植根于整個業界之內,PHP如如今已得到了人們的廣泛重視,諸如IBM和Microsoft這樣的公司都已支持這種企業級語言。PHP友好地融合了許多新的觀念和思想,其中最值得關注的是通過更健壯的、更靈活的和更經濟的部署來開發PHP應用程序。與此同時,許多資深的編程人員也在PHP中引入了若干重要的概念,本書側重的就是其中一個主要的概念:設計模式。
## 0.1 本書適用的范圍
在確定本書所適用的讀者對像時,作者非常難于取舍。是為剛接觸PHP及其功能和概念的初級編碼員而編寫還是為具有多看工作經驗的編程人員而編寫?是應當為了解PHP面向對像功以折專業讀者而編寫嗎?本書是否需要繼續包含對PHP4的支持?最后一個問題比較容易回答:“當然,不再支持PHP4。”然而,考慮到PHP4仍然被廣泛部署,開發人員仍然在使用PHP4創建新的功能,因此并不能輕易地給出這個答案。為了幫助更廣泛的讀者使用PHP實現設計模式,而不是僅僅作為PHP語言參考材料,本書采用了下列指導原則來確事實上適用的讀者。
**0.1本書讀者對像:**
* 必須完全了解PHP語言,或者至少收藏過http://www.php.net 的網址。因為某些示例可能使用編程新手之前從未遇到過的函數。
* 必須大致掌握PHP中所使用的面向對象編程(Object Oriented Programming,OOP)技術。中級OOP編程人員會發現第二間中對PHP高級OO功能的探討是非常有價值的。
* 必須使用PHP5或更高版本從而具有可用的面向對像編程功能的完整集合,并且能夠執行示例和案例分析代碼。
* 應當熟悉統一建模語言(Unified Modeling language,UML)。
簡單來說,對于在構建交互式應用程序方面具有一定經驗(至少曾經建過一個博客)的編程人員來說,本書中使用的示例和概念是極為有價值的,如果以前只使用PHP完成過簡單的工作(如構建主題模板或聯系表單),那么讀者會發現閱讀與模式相關的章節是較為困難的。
**0.2 本書的結構**
本書分三大部分:引言章節、參考章節以及案例分析章節。這幾個部分具有不同的側重點。
**0.2.1 引言章節**
第一章不僅對設計模式進行了簡要的介紹,而且說明了在PHP中使用這些設計模式的要求。全世界才華橫溢的PHP編程人員總是渴望學習新的知識。本章的目的在于:將PHP編程人員的視野范圍從只基于PHP概念擴展至體系結構更健全的設計模式領域。
第二章側重于介紹一些工具,這些工具是在PHP中構建各種設計模式的基礎。通過回顧PHP的中級和高級OOP功能、標準PHP庫以及現有的開放源代碼PHP架構,本章將幫助讀者更深入地理解PHP與設計模式。
**0.2.2參考章節**
參考章節是本書的中間章節,也是設計模式是基本的部分。這些章節可以分為4個主要部分:名稱、問題與解決方案、UML圖以及一個簡單的面向對像的代碼示例。上述內容基本上覆蓋了設計模式的主要功能部分,同時也不至于過分冗長。
**0.2.3案例分析**
本書最后一個部分是一個深入的案例分析,包括項目和計劃的詳細說明、對可用模式的分析以及逐步應用這些模式的方式。
***1功能分析***
通常,當您獲得一系列規范說明時,它們并不是最終的版本。在最初查看這些說明時,你應當對具體的體系結構有大致的了解。此時,您會希望了解項目的需求,以便確定它是一個公公應用一次的實例,還是一個可擴展的項目。需要在將來實現哪些功能?假如您不是這方面的專家,那么可能需要根據從業務分析中了解到的具體問題來尋求答案。
在研究案例的時候,您會收到客戶提供的規范說明。本書將全面講述查看規范說明、提出問題和理清思路的整個過程。最后,我們將提供一個已更新的規范說明文檔。
***2模式分析***
在開發任何項目時,必須先進入分析階段。我們遇到太多這樣的例子:在項目開始的階段,許多編程人員要么漫不經心,要么得意忘形,從而導致最終完成的項目往往不盡如人意。此時,應該重新認真查看規范說明以確定自己的工作計劃。
***3逐步生成代碼***
案例分析中的這個環節有些偏高本書設定的目標。該部分包括基于UML圖的詳細代碼示例。本書將從模式層次分步驟闡明構建應用程序各部分的整個思考過程。然而,我們的重點并非針對語言具體功能的分析。因此,中級編程人員有時可能需要參考PHP手冊。
生成全部代碼后,你應當回顧自己的應用程序以及編碼過程中所有的選擇,從而確保沒有比當前模式更適合的模式。設計模式并不意味著必須支持嚴格的規則,但是必須針對具體的應用程序建立構選塊和框架。為了創建體系結構更建全的代碼庫,我們完全可以變換項目中的設計模式。
**0.3 使用本書的要求**
因為本書的一個優點是更注重概念(而非應用),所以本書的要求非常簡單,如下所示:
* Windows 或 linux操作系統
* PHP5.2或更高版本
* MySQL5.0或更高版本
如果不滿足上述要求,大部分樣本代碼仍然能夠正常運行。然而,運行本書的最后一個案例分析時,必須滿足這些要求。
**0.4 源代碼**
學習本書的示例時,讀者既可以手動輸入所有代碼,也可以使用本書附帶的源代碼文件。本書使用所有源代碼都可以從http://www.wrox.com 和 http://www.rupwk.com.cn 上下載。登錄到該站點,從Search工具可使用書名列表就可以找到本書。隨后,單擊本書細目頁面上的Download Code鏈接就可以獲得所有源代碼。
因為許多圖書的書名都很相似,所以通ISBN找到本書是最簡單的查找方式。本書的ISBN是978-0-470-49670-1。
下載代碼后,只需用自己喜歡的解壓軟件對它進行解壓縮即可。此外,讀者也可以進入http://www.wrox.com/dynamic/books/download.aspx上的Wrox代碼下載主頁,查看本書的其他Wrox圖書的所有可用代碼。
- PHP設計模式
- 作者簡介
- 前言
- 第I部分 初識設計模式與PHP
- 第1章理解設計模式
- 1.1什么是設計模式
- 1.2設計模式未涵蓋的內容
- 1.3設計模式的相關論證
- 1.4在PHP中使用設計模式的原因
- 1.5本章小結
- 第2章使用現有的工具
- 2.1已有架構中的模式
- 2.2PHP標準庫
- 2.3使用具有模式的EclipsePDT
- 2.4本章小結
- 第II部分 參考內容
- 第3章適配器模式
- 第4章建造者模式
- 第5章數據訪問對象模式
- 第6章裝飾器模式
- 第7章委托模式
- 第8章外觀模式
- 第9章工廠模式
- 第10章解釋器模式
- 第11章迭代器模式
- 第12章中介者模式
- 第13章觀察者模式
- 第14章原型模式
- 第15章代理模式
- 第16章單元模式
- 第17章策略模式
- 第18章模板模式
- 第19章訪問者模式
- 第III部分 PHP設計案例分析
- 第20章需求分析