oop04複習
2014-9-3 10:48:45
要點:--1、轉殖物件
--2、__tostring( )
--3、 __call( )
--4、自動載入類
--5、物件序列化
1、轉殖物件以及__clone()方法
概述:物件屬於引用型別,普通的"="號屬於引用賦值
有時可能需要根據乙個物件完全轉殖出乙個一模一樣的物件,而且轉殖以後,兩個物件互不干擾。
格式:
$obj = newclass
();$obj2 = clone
$obj;
但是,當要轉殖的物件中有子物件或資源時,轉殖會不完整
魔術方法:__clone()
當執行clone轉殖時會自動呼叫的方法,主要用於解決物件中特殊屬性的複製操作。
2、__tostring( )
概述:當試圖直接echo物件時,會報錯。我們可以在類中加上這個方法,會在echo時自動呼叫
示例:
publicfunction
__tostring()
3、 __call( )
概述:當試圖訪問物件中不存在的方法時,會報錯。我們可以在類中加上這個方法來處理這種情況
格式:
mixed __call( string$name , array
$arguments )
第乙個引數$name表示方法名
第二引數$arguments表示呼叫時的引數列表(陣列型別)
示例:
publicfunction __call($name,$args
)不存在!引數列表:";
var_dump($args
);}
4、自動載入類(__autoload())
該方法位於類之外.
當new乙個新物件時,程式會試圖呼叫該方法自動包含所需要的檔案
示例:
function __autoload($classname)else
}
5、物件序列化
**反序列化(unserialize):能夠重新把字串變回php原來的物件值
note:序列化乙個物件將會儲存物件的所有屬性變數和類名資訊,但是不會儲存物件的方法.
所以,反序列化時需匯入原先物件的方法.
***** ***** *****
[**]物件序列化中的魔術方法__sleep( )和 __wakeup( )
__sleep(): 是執行序列化時自動呼叫的方法,目的是實現資源型別屬性的關閉釋放等操作
note:sleep方法需要返回乙個陣列,其中陣列中的值是序列化時要保留的屬性名
__wakeup():是在執行反序列化時自動呼叫的方法,目的是實現資源屬性的開啟(sleep方法關閉的資源),即再次初始化.
【示例】
publicfunction
__sleep()
【完整示例】
<?php//宣告乙個person類,包含三個成員屬性和乙個成員方法
class
person
}$person = new person(); //
能過person類建立乙個物件,物件的引用名為$person
$person_string = serialize($person); //
通過serialize函式將物件序列化,返回乙個字串
file_put_contents("file.txt", $person_string); //
將物件序列化後的字串儲存到file.txt檔案中
//將file.txt檔案中的字串讀出來並賦給變數$person_string
$person_string = file_get_contents("file.txt");
$person = unserialize($person_string); //
進行反序列化操作,形成物件$person。
$person -> say(); //
呼叫物件中的say()方法,用來測試反序列化物件是否成功
PHP物件導向04 序列化
oop04複習 2014 9 3 10 48 45 要點 1 轉殖物件 2 tostring 3 call 4 自動載入類 5 物件序列化 1 轉殖物件以及 clone 方法 概述 物件屬於引用型別,普通的 號屬於引用賦值 有時可能需要根據乙個物件完全轉殖出乙個一模一樣的物件,而且轉殖以後,兩個物件...
PHP物件導向4 序列化
序列化 serialization 將物件的狀態資訊轉換為可以儲存或傳輸的形式的過程。警告 各種語言所採用的序列化機制往往不一樣,不相容。string serialize mixed value serialize 返回字串,此字串包含了表示 value 的位元組流,同時不丟失其型別和結構。seri...
php物件導向 OOP 把物件序列化
有時候需要把乙個物件在網路上傳輸,為了方便傳輸,可以把整個物件轉化為二進位制串,等到達另一端時,再還原為原來的物件,這個過程稱之為序列化,就像我們現在想把一輛汽車通過輪船運到美國去,因為汽車的體積比較大,我們可以把汽車拆開成小的部件,然後我們把這些部件通過輪般運到美國去,到了美國再把這些部件組裝回汽...