首頁 >後端開發 >php教程 >PHP中魔術方法的使用舉例

PHP中魔術方法的使用舉例

little bottle
little bottle轉載
2019-04-18 11:56:312621瀏覽

本文小編將就PHP中的魔術方法的使用做簡要敘述附帶程式碼,有興趣的小夥伴可以看看!

什麼是「魔術方法」?

在PHP中以兩個底線開頭的方法,__construct(), __destruct (), __call(), __callStatic(),__get(), __set(), __isset(), __unset ( ), __sleep(), __wakeup(), __toString(), __set_state,() __clone() __autoload()等,稱為"魔術方法"(Magic methods)。如果希望PHP呼叫這些魔術方法,首先必須在類別中定義,否則PHP不會執行未建立的魔術方法。

1.__get __set是在給不可存取屬性賦值和讀取時,調用

#2.__sleep 是在序列化物件的時候呼叫

3.__wakeup是在反序列化物件的時候呼叫

4.可以在序列化物件的時候, 只序列化指定的屬性, 減少序列化後的大小, 要把這個物件字串儲存在例如memcache的時候,比較有用

5.例如下面的範例, 我只序列化了data屬性, 在__sleep函數裡進行限制


<?php
class Test{
	public $name;
	protected $data=array();
	public function __set($name,$value){
		$this->data[$name]=$value;
	}
	public function __get($name){
		if(!isset($this->data[$name])){
			return "";
		}
		return $this->data[$name];
	}
	public function __sleep(){
		echo "sleep...\r\n";
		return array(&#39;data&#39;);
	}
	public function __wakeup(){
		echo "wakeup...\r\n";
	}
}
$test=new Test();
$test->name="我不会被序列化进去";
$test->bbbb="taoshihan";
$testObjectStr=serialize($test);
var_dump($testObjectStr);
var_dump(unserialize($testObjectStr));

 相關教學:php程式設計從入門到精通全套影片教學

#

以上是PHP中魔術方法的使用舉例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除

相關文章

看更多