一、php面向?qū)ο蟾呒壧匦?/span> 1.
命名空間 2.
類自動載入 1)
spl_autoload_register(); 3.
PSR-0規(guī)范 1)
命名空間與絕對路徑一直 2)
類名首字母大寫 3)
除入口文件外,其他".php"必須只有一個類 4.
SPL標準庫 1)
stack a)
new SplStack() b)
push() c)
pop() 2)
queue a)
new SplQueue() b)
enqueue() c)
dequeue() 3)
heap a)
new SplHeap() b)
insert() c)
extract() 4)
fixedArray 固定長度數(shù)組 a)
new fixedArray(10) 5.
php鏈式操作 6.
PHP魔術(shù)方法 1)
__get|__set 設(shè)置|調(diào)用不存在的屬性 2)
__call|__callStatic 調(diào)用不存在的方法|靜態(tài)方法 3)
__toString 轉(zhuǎn)成字符串 4)
__invoke 對象當(dāng)成函數(shù)去執(zhí)行時調(diào)用invoke 二、11種php設(shè)計模式 1.
三種基本設(shè)計模式 1)
工廠模式
a)
工廠方法或者類生成對象,而不是在代碼中直接new 2)
單例模式 a)
使某個類的對象僅創(chuàng)建一次 3)
注冊樹模式 a)
全局共享和交換對象 2.
適配器模式 1)
將不同的函數(shù)接口封裝成統(tǒng)一的api 2)
cache適配器
mysql-mysql_i-PDO適配器 3.
策略模式 1)
將一組特定的行為和算法封裝成類,以適應(yīng)某些特定的上下文環(huán)境 2)
分支邏輯 4.
數(shù)據(jù)對象映射模式 1)
將對象和數(shù)據(jù)存儲映射起來,對一個對象操作會映射出對數(shù)據(jù)存儲的操作 5.
觀察者模式 1)
當(dāng)一個對象狀態(tài)發(fā)生改變時,依賴它的對象全部會受到通知,并自動更新 2)
場景: a)
一個事件發(fā)生后,要執(zhí)行一連串的更新操作,傳統(tǒng)的編程方式是在事件的代碼之后直接加入處理邏輯,當(dāng)更新的邏輯增多之后,代碼會變得難以維護。這種方式是耦合的,侵入式的,增加新的邏輯需要修改時間主體的代碼 3)
觀察者模式實現(xiàn)了低耦合,非侵入式的通知和更新機制 6.
原型模式 1)
與工廠模型作用類似,用來創(chuàng)建對象 2)
與工廠模式的實現(xiàn)不同,原型模式是縣創(chuàng)建好一個原型對象,然后通過clone原型對象來創(chuàng)建新的對象,免去類創(chuàng)建時重復(fù)的初始化操作 3)
原型模式適用于大對象的創(chuàng)建 4)
重點:clone 7.
裝飾器模式 1)
可以動態(tài)的添加修改類的功能 2)
一個類提供了一項功能,如果要在修改并添加額外的功能,傳統(tǒng)的編程模式需要寫一個子類來繼承,并重新實現(xiàn)類的方法 3)
使用裝飾器模式,僅需要在運行時添加一個裝飾器的對象即可實現(xiàn),可以實現(xiàn)最大的靈活性 8.
迭代器模式 1)
在不需要了解內(nèi)部實現(xiàn)的前提下,遍歷一個聚合對象的內(nèi)部元素 2)
相比于傳統(tǒng)的編程模式,迭代器模式可以隱藏遍歷元素的所需操作 3)
繼承Iterator接口:class AllUser implements \Iterator{} 9.
代理模式 1)
在客戶端與實體之間建立一個代理對象(proxy),客戶端對實體進行操作全部委派給代理對象,隱藏實體的具體實現(xiàn)細節(jié)部署到另外的服務(wù)器 2)
Proxy還可以與業(yè)務(wù)代碼分離,業(yè)務(wù)代碼中通過RPC來委派任務(wù) 三、面向?qū)ο缶幊袒驹瓌t 1.
單一職責(zé):一個類,只需要做好一件事情 2.
開放封閉:一個類,應(yīng)該是可擴展的,而不可修改的
3.
依賴倒置:一個類,不應(yīng)該強依賴另外一個類,每個類對于另外一個類都是可替換的 4.
配置化:盡可能的使用配置,而不是硬編碼 5.
面向接口編程:只需要關(guān)心接口,不需要關(guān)心實現(xiàn) 四、MVC結(jié)構(gòu) 1.
模型 2.
視圖 3.
控制器 五、配置與設(shè)計模式 1.
php中使用ArrayAccess實現(xiàn)配置文件的加載 2.
在工廠方法中讀取配置,生成可配置化的對象 3.
使用裝飾器模式實現(xiàn)權(quán)限驗證,模板渲染,json串化 4.
使用觀察者模式實現(xiàn)數(shù)據(jù)更新時間的一系列更新操作 5. 使用代理模式實現(xiàn)數(shù)據(jù)庫的主從自動切換 |
|