首页> 基础笔记 >PHP基础学习 >面向对象 面向对象

PHP对象串行化

作者:小萝卜 2019-09-03 浏览 928

简介

PHP对象串行化

对象也是一种在内存中存储的数据类型,他的寿命通常随着生成该对象的程序终止而终止。有时候可能需要将对象的状态保存下来,需要时再将对象恢复。对象通过写出描述自己状态的数值来记录自己,这个过程称对象的串行化(Serialization)。

以下两种情况需要将对象串行化:
对象需要在网络中传输时,将对象串行化成二进制串即可。
对象需要持久保存时,将对象串行化后写入文件或数据库。

串行化和反串行化函数:
serialize() -- 串行化,返回一个包含字节流的字符串
unserialize() -- 反串行化,能够重新把字符串变回php原来的对象值。 

串行化一个对象将会保存对象的所有属性变量和类名信息,但是不会保存对象的方法。

实例1:
<?php
    //声明一个Person类,包含三个成员属性和一个成员方法
    class Person {        
        public $name = "zhangsan";     	//人的名字
        public $sex = "man";       	//人的性别
        public $age = 20;      		//人的年龄
        public function say() {  		//这个人可以说话的方法, 说出自己的成员属性       
            echo "我的名字:".$this->name.",性别:".$this->sex.",年龄:".$this->age."<br>";
        }
    }
    $person = new Person();     //能过Person类创建一个对象,对象的引用名为$person
    $person_string = serialize($person);  //通过serialize函数将对象串行化,返回一个字符串
    file_put_contents("file.txt", $person_string);  //将对象串行化后的字符串保存到file.txt文件中

    //将file.txt文件中的字符串读出来并赋给变量$person_string
    $person_string = file_get_contents("file.txt"); 
    $person = unserialize($person_string);  //进行反串行化操作,形成对象$person。
    $person -> say();        //调用对象中的say()方法,用来测试反串行化对象是否成功
实例2:
<?php
//对象的串行化(序列化):
//serialize() -- 串行化
//unserialize() -- 反串行化

//实例化类产生一个对象
$stu = new Stu("王五",20);
echo $stu."<br/>";

//将对象串行化
$str = serialize($stu);
echo $str."<br/>";

//将字串写入到一个文件中
file_put_contents("ob.txt",$str);

//将字串从文件ob.txt中读取出来
$info = file_get_contents("ob.txt");

//将字串info反串行化成对象。
$ob = unserialize($info);

echo $ob;


class Stu{
    private $name;
    private $age;
    public function __construct($name,$age){
        $this->name = $name;
        $this->age = $age;
    }
    
    //此方法必须无参数,返回字串类型的值,当直接输出一个对象时自动调用。
    public function __toString(){
       return "名字:".$this->name."; 年龄:".$this->age; 
    }
}

 

很赞哦! (0)

文章评论

    高端网站建设