課程主要內容
一、PHP面向對象的高級特性
二、11種設計模式
三、PSR-0,Composer,Phar等最流行的技術
目標
掌握PHP各種設計模式,並具有設計純面向對象框架和系統的能力
2、編程字體的選擇 等寬字體 Courier New,Consolas,Source Code Pro(推薦),由Adobe公司專門爲程序員設計,免費開源
3、命名空間 5.3之後增長
5.5以後,類自動載入 ,之前用 __autoload(),後被廢棄,spl_autoload_register
PSR-0規範 一、命名空間必須與絕對路徑一致 二、類名首字母必須大寫 三、除入口文件外,其餘‘.php’只有一個類
4、SPL標準庫
棧,SplStack,先進後出,push,pop
隊列,SplQueue,先進先出,enqueue,dequeue
最小堆,SplMinHeap,先進先出,insert,extract
固定長度的數組,SplFixedArray
鏈式操做,魔術方法 __get/__set, __call/__callStatic, __toString, __invoke
5、三種基礎設計模式
工廠模式,工廠方法或類生成對象,而不是在代碼裏直接new
單例模式,使某個類的對象只容許被建立一次
註冊樹模式,全局共享和交換對象
6、適配器模式
一、能夠將大相徑庭的函數接口封裝成統一的API
二、實際應用舉例,數據庫操做有mysql,mysqli,pdo,能夠用適配器模式統一成一致。相似的場景還有cache適配器,將memcache,redis,apc,file等不一樣的緩存函數統一成一致
7、策略模式
一、將一組特定的行爲和算法封裝成類,以適應特定的上下文環境
二、實際舉例,假如一個電商系統,針對男女性用戶展現不一樣的商品類目
三、能夠實現Ioc,依賴倒置、控制反轉
8、數據對象映射模式
一、是將對象和數據存儲映射起來,對一個對象的操做可映射爲對數據存儲的操做
二、實現一個ORM類,對複雜的SQL語句映射成對象屬性的操做
9、觀察者模式
一、當一個對象狀態發生改變時,依賴它的對象所有會收到通知,並自動更新
二、實現了低耦合,非侵入式的通知與更新機制
10、原型模式
一、與工廠模式相似,都是用來建立對象
二、先建立好一個原型對象,而後經過clone來建立新的對象,這樣就免去了對象建立時重複的初始化操做
三、適用於大對象的建立,僅需內存拷貝便可
11、裝飾器模式
一、decorator,能夠動態地添加修改類的功能
二、一個類提供了一項功能,若是要增長或修改額外的功能,傳統的編程模式,須要寫一個子類繼承它,並重寫相應的方法
三、使用裝飾器模式,僅需在運行時添加一個裝飾器對象便可實現,能夠實現最大的靈活性
array_reserve,array_rand
12、迭代器模式
一、在不須要了解內部實現的前提下,遍歷一個聚合對象的內部元素
二、相對於傳統的編程模式,能夠隱藏遍歷元素所須要的操做
\Iterator
十3、代理模式
一、在客戶端與實體之間創建一個代理對象(proxy),客戶端對實體操做所有委派給代理對象,隱藏實體的具體實現細節
二、Proxy還能夠與業務代碼分離,部署到另外的服務器,業務代碼中經過RPC來委派任務
十4、面向對象設計的基本原則
一、單一職責:一個類只完成一個功能
二、開放封閉:一個類應該是可擴展的,不可修改的
三、依賴倒置:一個類不該該強依賴與另外一個類,每一個類對於另一個類都是可替換的
四、配置化:儘量使用配置,不要硬編碼
五、面向接口編程:只須要關心接口,不須要關心實現
配置與設計模式
一、使用ArrayAccess實現配置文件的自動加載