php的对象串行化

2021-02-06 02:14

阅读:514

标签:联网   ons   autoload   cti   魔术   成员   head   alt   http   

 php的对象串行化,就是把对象传化成二进制字符串格式,便于存储在文件、数据库中,或者在网络上传输对象数据,其中涉及的函数是:

  1.serialize()函数:串行化对象,把对象转换成二进制字符串格式;

  2.unserialize()函数:反串行化对象,把二进制字符串转换成对象;

  3.魔术方法 __sleep():用来将对象中的部分成员串行化;

  4.魔术方法 __wakeup():用来在二进制串重新组成一个对象时,为新对象中的成员属性重新初始化。

  实例:

  1.index.php文件:

php
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;

 

2.person.php文件:

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; } }

 

3.ClassShow.php文件:

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; } }

 

注意:上面的实例包含了自动加载类 spl_autoload_register() 和 魔术方法 __toString() 的应用!

 

效果如下:

技术图片

php的对象串行化

标签:联网   ons   autoload   cti   魔术   成员   head   alt   http   

原文地址:https://www.cnblogs.com/qingsong/p/13122050.html


评论


亲,登录后才可以留言!