一、了解面向對象基礎知識
面向對象的優勢:
1、具有擴充現有代碼的功能
2、允許類型提示,能夠對傳遞給函數的變量進行更加嚴格的控制
3、允許使用現有的設計模式,可以用來解決常見的軟體設計問題并使用調試更加容易
成員變量和成員方法:
public(公有的)表示其修飾的成員可以通過PHP程式全局通路
private(私有的)表示其修飾的成員僅可以被定義它的類通路
protected(受保護的)表示其修飾的成員僅可以被定義它的類及派生類通路
static(靜态的)表示成員不會綁定到類的某一特定的執行個體,可以被類的任意執行個體通路
abstract(抽象的)抽象方法标志抽象類,必須定義類的所有子類加以實作
final(終态的)表示其修飾的成員無法在派生類中重新定義,是以它定義的功能無法修改
const(常量)将類内部的變量聲明為常量,大寫字母表示
魔術方法和常量 :
__CLASS__ :該值總是與定義的該調用函數的類名相同
__FILE__ :指常量所指向檔案的檔案名稱
__LINE__:指輸出代碼中的位置行
__DIR__ :指檔案所在的位置絕對目錄
__FUNCTION__和__METHOD__ :指函數或方法所定義的名稱
__NAMESPACE__ :指目前的命名空間
__constructor() :構造函數表示類被執行個體成對象時所調用的方法 --new關鍵字
__destructor() :析構函數表示對象被垃圾回收時調用的方法 --null或unset()
__toString() :當對象被當作字元串輸出時所調用的方法
__sleep():當對象被序列化時調用的方法 ,它傳回一個數組,用來清理用儲存的成員變量
__wakeup():當序列化的對象被喚醒時調用的方法 ,用來重新打開句柄
__set():當修改一個不存在的成員變量時調用的方法
__get(): 當調用一個不存在的成員變量時調用的方法
__unset(): 當銷毀一個不存在的成員變量時調用的方法
__isset(): 當檢測一個不存在的成員變量時調用的 方法
__call():當調用一個不存在的成員函數時調用的 方法
__callStatic():當調用一個不存在的靜态方法時調用的 方法
__set_state():用來檢查應用程式是否進行多次動态代碼求值 var_export()調用時
__clone():當對象被克隆時調用的方法
__invoke():将對象作為函數使用時調用的方法
接口:
interface (接口)的含義
接口是用來定義功能的結構體
接口内的功能必須通過其他類來實作
接口并不會規定某個功能的内部實作,可以把借口看作類需要遵循的模版
接口是定義方法簽名和傳回值類型,是以類不是繼承借口,而是實作接口implements
與類相關的一些關鍵字和函數:
new:執行個體化類為一個對象
instanceoof:表示左操作數的類型是右操作數的類型的子類則傳回真
get_class():傳回執行個體化對象的類名
serialize() :序列化對象,用來存儲應用程式的狀态及緩存全部對象
unserialize():反向序列化 将序列化過的對象傳回成對象
var_export():輸出或傳回一個變量的結構資訊以字元串表示,即PHP的源代碼
設計模式:
Singleton(單例):表示類隻能執行個體化一次,生成一個全局狀态且單一根對象
Multiton(多例):表示類可以多次執行個體化,確定同一個對象的多個執行個體不會發生沖突
Proxy(代理):表示所有的成員方法和變量都來源于目标類,本類應用來記錄通路資訊
Facade(外觀):抽象化複雜的功能,将子系統處理各請求的細節委托成合适的責任
Decorator(裝飾者):表示對象執行個體化後,通過多個裝飾者類來擴充執行個體化對象
Factory(工廠): 對象調用某一條件的方法時,依照判斷條件來擷取到子類的對象執行個體
Observer Pattern(觀察者模式):當釋出者對象生成事件後,觀察者必須掌握廣播了它的監聽事件的對象
Publisher/subscriber(釋出者/訂閱者):當應用程式在何時何處觸發時,都将訂閱事件的通知
Lazy initialization(延遲初始化):表示真正需要該對象時才進行初始化
設計模式請看 : PHP設計模式
轉載于:https://www.cnblogs.com/linzhenjie/archive/2012/08/06/php-oop.html