zoukankan      html  css  js  c++  java
  • PHP面向对象之序列化与反序列化

    序列化与反序列化

    • 概念

      • 在PHP中,数组和对象无法保存
      • 如果需要保存就要将数组或对象转换成一个序列
    • 序列化 (serialize)

      • 将数组或对象转换成一个序列
    • 反序列化 (unserialize)

      • 将序列化的字符串转换成数组或对象

    数组的序列化与反序列化

    # 数组的序列化
    <?php
    $stu= ['南京','泰州','盐城'];
    $str= serialize($stu);		//序列化
    file_put_contents('./stu.txt', $str);
    ?>
    
    # 数组的反序列化
    <?php
    $str= file_get_contents('./stu.txt');
    $stu= unserialize($str);		//反序列化
    print_r($stu);
    ?>
    

    对象的序列化与反序列化

    • 注意
      • 对象的反序列化需要有类的参与
      • 如果没有类在反序列化时候无法确定类
    # 对象的序列化
    <?php
    class Student {
    	public $name;
    	protected $sex;
    	private $add;
    	public function __construct($name, $sex, $add) {
    		$this->name= $name;
    		$this->sex= $sex;
    		$this->add= $add;
    	}
    }
    $stu= new Student('Sunny', '男', '北京');
    $str= serialize($stu);
    file_put_contents('./stu.txt', $str);
    ?>
    
    # 对象的反序列化
    <?php
    $str= file_get_contents('./stu.txt');
    $stu= unserialize($str);
    echo '<pre>';
    var_dump($stu);
    echo '</pre>';
    if(!is_string($stu)){
    	echo gettype($stu).'<br>';
    }
    foreach($stu as $key=>$value){
    	echo $key.': '.$value.'<br>';
    }
    ?>
    
  • 相关阅读:
    进程 线程
    random模块 时间模块 sys模块 os模块 json模块 pickle模块
    异常处理
    面向对象进阶篇
    面向对象初级篇
    正则表达式
    re模块的相关知识
    CNN归纳偏好
    window和Linux下安装nvidia的apex
    使用GrabCut做分割
  • 原文地址:https://www.cnblogs.com/SharkJiao/p/14117180.html
Copyright © 2011-2022 走看看