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