php的对象串行化
2021-02-06 02:14
标签:联网 ons autoload cti 魔术 成员 head alt http php的对象串行化,就是把对象传化成二进制字符串格式,便于存储在文件、数据库中,或者在网络上传输对象数据,其中涉及的函数是: 1.serialize()函数:串行化对象,把对象转换成二进制字符串格式; 2.unserialize()函数:反串行化对象,把二进制字符串转换成对象; 3.魔术方法 __sleep():用来将对象中的部分成员串行化; 4.魔术方法 __wakeup():用来在二进制串重新组成一个对象时,为新对象中的成员属性重新初始化。 实例: 1.index.php文件: 2.person.php文件: 3.ClassShow.php文件: 注意:上面的实例包含了自动加载类 spl_autoload_register() 和 魔术方法 __toString() 的应用! 效果如下: php的对象串行化 标签:联网 ons autoload cti 魔术 成员 head alt http 原文地址:https://www.cnblogs.com/qingsong/p/13122050.htmlphp
header("Content-Type:text/html;charset=utf-8");
class ClassAutoloader {
public function __construct() {
spl_autoload_register(array($this, ‘loader‘));
}
private function loader($className) {
include $className . ‘.php‘;
}
}
$autoloader = new ClassAutoloader();
echo new ClassShow;
php
class Person{
private $name;
private $age;
private $sex;
function __construct($name = ‘‘, $sex =‘‘, $age = ‘‘){
$this->name = $name;
$this->sex = $sex;
$this->age = $age;
}
function say(){
return "我的名字:".$this->name.",姓别:".$this->sex.",年龄:".$this->age."
";
}
/**
* 魔术方法__sleep() 在对象串行化时用数组设置
* 需要串行化的对象属性,这里忽略了属性 $sex
*/
function __sleep(){
$arr = array("name", "age");
return $arr;
}
/**
* 魔术方法 __wakeup() 用于在反串行化时对对象
* 属性重新赋初值
*/
function __wakeup(){
$this->name = "李佳";
//$this->sex = "女";
$this->age = 26;
}
}php
class ClassShow{
function __toString(){
$str = ‘‘;
$obj1 = new person("张三", "男", 23);
$str .= "原始内容:
" . $obj1->say();
$str .= "
";
/**
* 串行化对象
*
* 变量 $objStr 才是串行化需要得到的数据,
* $objStr 中的数据可以用文件、数据库储存,
* 可以用互联网进行传输,
* 这里省略了这些步骤。
*/
$objStr = serialize($obj1);
$str .= "对象串行化内容:
" . $objStr;
$str .= "
";
//反串行化对象
$obj2 = unserialize($objStr);
$str .= "反串行化内容:
" . $obj2->say();
return $str;
}
}
上一篇:python的高阶特性
下一篇:回发保留前台添加的html