本篇文章介紹的內容是PHP clone 重溫物件導向編程,現在分享給大家,有需要的朋友可以參考一下
php物件複製
clone作用,複製一個新的對象,需要保持所有屬性與原來視窗相同,但是必須是新物件。 (如果不是新對象,那麼一個視窗中的改變會影響到另一個窗口,或是對象A保存對象B的引用,當你複製對象A時,你想使用的對象就不再是對象B而是對象B的一個副本,這個時候就需要得到物件A的一個副本、)
PHP 深複製和淺複製
PHP5開始, new 運算子自動回傳一個參考。一個物件透過一個標識符來存取真正的物件內容。
深複製指的是把引用對象的變數只想複製過的新對象,而不是原有的被引用的對象。
php實現深複製可以用兩種方式,1️⃣ clone 2️⃣透過序列化物件的方式,先將物件序列化之後再反序列化。
ResumeA));
__clone 方法可以沒有參數,它自動包含有
that 兩個指標
this 指的目前物件的屬性,that指老的物件的屬性
類別和物件
類別:具有相同屬性和服務的一組物件的集合。
物件:類別實例化的結果就是物件
建構方法:
在一個類別中只能宣告一個建構方法,而是只有在每次建立物件的時候都會去呼叫一次建構方法,不能主動的呼叫這個方法,所以通常用它執行一些有用的初始化任務。例如對成屬性在創建物件的時候賦初值。
析構函數
銷毀一個類別之前執行當前的一些操作或完成一些功能
析構函數會在到某個物件的所有參考都被刪除或當物件被明確銷毀時執行,也就是物件在記憶體中被銷毀前調用析構函數
類別在物件實際是以堆疊的形式放在內存,所以最後調用析構函數的時候,按照後進先出的原則
物件導向程式設計三大功能:
封裝 繼承 多型
封裝:把物件的全部屬性和全部的服務結合在一起,形成一個不可分割的獨立單位(物件),訊息隱藏,即盡可能隱藏物件的內部細節
繼承 單繼承(PHP JAVA,C 中一個衍生類別可以從多個基底類別派生) 所定義的新的資料型別不僅擁有新定義的成員,而且同時擁有舊的成員。我們稱已存在的用來衍生新類的類為基底類,又稱為父類以及超類。由已存在的類別衍生出的新類別稱為衍生類別,又稱為子類別。
PHP重載 指的是子類別覆寫父類別已經有的方法
final 定義屬性成員,不能被類別覆寫
static 和 const
static 描述成員屬性和成員方法是靜態的,
static 成員能夠限制外部的訪問,因為static的成員是屬於類別的,是不屬於任何物件的實例,是在類別第一次載入的時候分配的空間,其他類別是無法存取的。只對類的實力共享,能夠一定程度對類形成保護。
static 在靜態方法不可以存取靜態成員 使用 const來實作
const修飾符的成員屬性的存取方式和static修飾的成員存取方式差不多,也是使用類別名,在方法裡面使用self,但是不用使用$符號,也不能使用物件來存取
把物件串列化
有兩種情況我們必須把物件串化,第一種情況就是把一個對象在網路中傳輸的時候要將物件串行化,第二種情況就是把物件寫入檔案或是資料庫的時候用到串行化。
serialize() 函數的參數為物件名,傳回值為一個字串。
在串列化一個物件時,會自動執行__sellp —–(可以在此時隱藏一些成員屬性) 方法,反序列化是執行__wakup() —-(可以在此時賦值)方法。
__sleep()函數不接受任何參數, 但傳回一個數組,其中包含需要串行化的屬性。末被包含的屬性將在串列化時被忽略,如果沒有__sleep()方法,PHP將保存所有屬性。
php物件複製
clone作用,複製一個新的對象,需要保持所有屬性與原始視窗相同,但必須是新物件。 (如果不是新對象,那麼一個視窗中的改變會影響到另一個窗口,或是對象A保存對象B的引用,當你複製對象A時,你想使用的對象就不再是對象B而是對象B的一個副本,這個時候就需要得到一個對象A的一個副本、)
PHP 深複製 和淺複製
PHP5開始, new 運算子會自動傳回一個參考。一個物件透過一個標識符來存取真正的物件內容。
深複製指的是把引用對象的變數只想複製過的新對象,而不是原有的被引用的對象。
php實現深複製可以用兩種方式,1️⃣ clone 2️⃣透過序列化物件的方式,先將物件序列化之後再反序列化。
ResumeA));
__clone 方法可以沒有參數,它自動包含有
that 兩個指標
this 指的目前物件的屬性,that指老的物件的屬性
類別和物件
類別:具有相同屬性和服務的一組物件的集合。
物件:類別實例化的結果就是物件
建構方法:
在一個類別中只能宣告一個建構方法,而是只有在每次建立物件的時候都會去呼叫一次建構方法,不能主動的呼叫這個方法,所以通常用它執行一些有用的初始化任務。例如對成屬性在創建物件的時候賦初值。
析構函數
銷毀一個類別之前執行當前的一些操作或完成一些功能
析構函數會在到某個物件的所有參考都被刪除或當物件被明確銷毀時執行,也就是物件在記憶體中被銷毀前調用析構函數
類別在物件實際是以堆疊的形式放在內存,所以最後調用析構函數的時候,按照後進先出的原則
物件導向程式設計三大功能:
封裝 繼承 多型
封裝:把物件的全部屬性和全部的服務結合在一起,形成一個不可分割的獨立單位(物件),訊息隱藏,即盡可能隱藏物件的內部細節
繼承 單繼承(PHP JAVA,C 中一個衍生類別可以從多個基底類別派生) 所定義的新的資料型別不僅擁有新定義的成員,而且同時擁有舊的成員。我們稱已存在的用來衍生新類的類為基底類,又稱為父類以及超類。由已存在的類別衍生出的新類別稱為衍生類別,又稱為子類別。
PHP重載 指的是子類別覆寫父類別已經有的方法
final 定義屬性成員,不能被類別覆寫
static 和 const
static 描述成員屬性和成員方法是靜態的,
static 成員能夠限制外部的訪問,因為static的成員是屬於類別的,是不屬於任何物件的實例,是在類別第一次載入的時候分配的空間,其他類別是無法存取的。只對類的實力共享,能夠一定程度對類形成保護。
static 在靜態方法不可以存取靜態成員 使用 const來實作
const修飾符的成員屬性的存取方式和static修飾的成員存取方式差不多,也是使用類別名,在方法裡面使用self,但是不用使用$符號,也不能使用物件來存取
把物件串列化
有兩種情況我們必須把物件串化,第一種情況就是把一個對象在網路中傳輸的時候要將物件串行化,第二種情況就是把物件寫入檔案或是資料庫的時候用到串行化。
serialize() 函數的參數為物件名,傳回值為一個字串。
在串列化一個物件時,會自動執行__sellp —–(可以在此時隱藏一些成員屬性) 方法,反序列化是執行__wakup() —-(可以在此時賦值)方法。
__sleep()函數不接受任何參數, 但傳回一個數組,其中包含需要串行化的屬性。末被包含的屬性將在串列化時被忽略,如果沒有__sleep()方法,PHP將保存所有屬性。
相關推薦:
以上是PHP clone 重溫物件導向編程的詳細內容。更多資訊請關注PHP中文網其他相關文章!