最重要的东西,用眼睛是看不见的。
在PHP5中有两个魔术方法__sleep()方法和__wakeup()方法,在对象串行化的时候,会调用一个__sleep()方法来完成一 些睡前的事情;而在重新醒来,即由二进制串重新组成一个对象的时候,则会自动调用PHP的另一个函数__wakeup(),做一些对象醒来就要做的动作。
__sleep()函数不接受任何参数, 但返回一个数组,其中包含需要串行化的属性。末被包含的属性将在串行化时被忽略,如果没有__sleep()方法,PHP将保存所有属性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| <?php
class Person { var $name; var $sex; var $age;
function __construct($name = "", $sex = "", $age = "") {
$this->name = $name; $this->sex = $sex; $this->age = $age; }
public function say() { echo "我的名子叫:" . $this->name . " 性别:" . $this->sex . " 我的年龄是:" . $this->age . "<br>"; }
public function __sleep() { $arr = array("name", "age"); return $arr; }
public function __wakeup() { $this->age = 40; }
}
$p1 = new Person("张三", "男", 20); $p1_string = serialize($p1); echo $p1_string . "<br>"; $p2 = unserialize($p1_string); $p2->say();
|