国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

php---魔術(shù)方法(__wakeup和__sleep)

2019-11-06 06:30:04
字體:
供稿:網(wǎng)友

先寫一段代碼

class myClass{ public $myContent; function outMycontent(){ //dosomething }}$content = new myClass();echo serialize($content);

輸出的結(jié)果是O:7:”myClass”:1:{s:9:”myContent”;N;}

它竟然把一個類的給序列化了,也就是把一個類轉(zhuǎn)換成了一個字符串,可以傳輸或者保存下來。

下面我修改一下上面的代碼

class myClass{ public $myContent; function __construct($string){ $this->myContent = $string; }}$content = new myClass('my china');echo serialize($content);

輸出的結(jié)果是O:7:”myClass”:1:{s:9:”myContent”;s:8:”my china”;}

序列化后也對應(yīng)了相應(yīng)的值,但是現(xiàn)在有個問題,比如我這個變量是個秘密呢?而且我又得把這個類序列化傳給別的地方呢? 看下面的代碼

class myClass{ public $myContent; function __construct($string){ $this->myContent = $string; }}$content = new myClass('我愛宋祖英,這是一個秘密');echo serialize($content);

輸出的結(jié)果是O:7:”myClass”:1:{s:9:”myContent”;s:36:”我愛宋祖英,這是一個秘密”;}

我的秘密序列化后還是存在的,可是我不想我的心里話被別人看到。這個時候php很貼心,她知道你的問題,所以設(shè)置了魔術(shù)方法。

__sleep() 就表示當(dāng)你執(zhí)行serialize()這個序列化函數(shù)之前時的事情,就像一個回調(diào)函數(shù),所以在這個回調(diào)函數(shù)里面我們就可以做點(diǎn)事情,來隱藏我的秘密。

class myClass{ public $myContent; function __construct($string){ $this->myContent = $string; } public function __sleep(){ $this->myContent = '這是我的秘密'; return array('myContent'); }}$content = new myClass('我愛宋祖英,這是一個秘密');echo serialize($content);

輸出的結(jié)果是:O:7:”myClass”:1:{s:9:”myContent”;s:18:”這是我的秘密”;}

我的心里話被加密了,這個就是__sleep()的作用。至于__wakeup()和__sleep()大同小異,只不過是反序列化之前進(jìn)行的回調(diào)函數(shù)。我不詳細(xì)說了,大家看下下面的代碼就明白了。

class myClass{ public $myContent; function __construct($string){ $this->myContent = $string; } public function __sleep(){ $this->myContent = '這是我的秘密'; return array('myContent'); } public function __wakeup(){ $this->myContent = '我的秘密又回來了'; //反序列化就不用返回數(shù)組了,就是對應(yīng)的字符串的解密,字符串已經(jīng)有了就不用其他的了 }}$content = new myClass('我愛宋祖英,這是一個秘密');PRint_r(unserialize(serialize($content)));

輸出的內(nèi)容為:myClass Object ( [myContent] => 我的秘密有回來了 )


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 灵武市| 米泉市| 新乡市| 双峰县| 台中市| 城固县| 南雄市| 渭源县| 樟树市| 张掖市| 扎兰屯市| 株洲县| 盐池县| 饶阳县| 九台市| 盐山县| 东乌珠穆沁旗| 宁国市| 垣曲县| 南漳县| 忻州市| 威海市| 马边| 古交市| 易门县| 黄梅县| 平塘县| 察哈| 静宁县| 贞丰县| 石泉县| 古丈县| 尤溪县| 枞阳县| 象州县| 玉山县| 班玛县| 和田县| 镇巴县| 河池市| 开远市|