thinkphp3有門面類別。門面為容器中的類別提供了一個靜態呼叫接口,具有更好的可測試性和擴展性,可以為任何的非靜態類別庫定義一個門面類,語法為“class Test{public function Class(){return路徑;}}」。
本文操作環境:Windows10系統、ThinkPHP3版、Dell G3電腦。
門面為容器中的類別提供了一個靜態調用接口,相比於傳統的靜態方法調用, 帶來了更好的可測試性和擴展性,你可以為任何的非靜態類別庫定義一個facade類別
為什麼使用門面
1、靜態方法和非靜態方法的區別(呼叫對象、引用變數不同)
靜態方法:是使用static關鍵字修飾的方法,又叫類別方法.屬於類別的,不屬於對象, 在實例化物件之前就可以透過類別名稱.方法名稱呼叫靜態方法。 (靜態屬性,靜態方法都是屬於類別的,可以直接透過類別名稱呼叫)。
A.在靜態方法中,可以呼叫靜態方法。
B.在靜態方法中,不能呼叫非靜態方法。
C.在靜態方法中,可以引用類別變數(即,static修飾的變數)。
D.在靜態方法中,不能引用成員變數(即,沒有static修飾的變數)。
E.在靜態方法中,不能使用super和this關鍵字
非靜態方法:是不含有static關鍵字修飾的普通方法,又稱為實例方法,成員方法。屬於對象的,不屬於類別的。 (成員屬性,成員方法是屬於物件的,必須透過new關鍵字建立物件後,再透過物件呼叫)。
A.在普通方法中,可以呼叫普通方法。
B.在普通方法中,可以呼叫靜態方法
C.在普通方法中,可以引用類別變數和成員變數
D.在普通方法中,可以使用super和this關鍵字
2、靜態方法和非靜態方法的區別(調用方法不同)
靜態方法可以直接調用,類別名稱調用和對象調用。 (類別名稱.方法名稱 / 物件名稱.方法名稱)
但是非靜態方法只能透過物件呼叫。 (物件名稱.方法名稱)
3、靜態方法與非靜態方法的差異(生命週期不同)
靜態方法的生命週期跟對應的類別一樣長,靜態方法和靜態變數會隨著類別的定義而被分配和裝載入記憶體中。一直到執行緒結束,靜態屬性和方法才會被銷毀。 (也就是靜態方法屬於類別)
非靜態方法的生命週期和類別的實例化物件一樣長,只有當類別實例化了一個對象,非靜態方法才會被創建,而當這個對象被銷毀時,非靜態方法也馬上被銷毀。 (也就是非靜態方法屬於物件)
總結:
類別方法可以直接透過類別名稱調用,實例方法必須先實例化類,再初始化對象,然後透過類別的實例物件才能呼叫
如何使用
1、建立一個需要放置門面類別的資料夾facade
2、寫好自己的公共類別
3、在facade創建facade類程式碼如下
use think/Facade; class TestFacade extends Facade{ protected static function getFacadeClass(){ return '写好的目标公共类绝对路径'; } }
4、呼叫這個公共類別的時候可以直接使用門面類別來取代公共類,這樣公共類別的非靜態方法也可以使用靜態呼叫了
推薦學習:《PHP影片教學》
以上是thinkphp3有門面類別嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!