03 php mvc 第10天 面向对象笔记4 序列化

变量序列化

1、什么是变量序列化

  • 序列化是将变量转换为可保存或传输的字符串的过程;
  • 反序列化就是在适当的时候把这个字符串再转化成原来的变量使用;
  • 这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性;
  • 序列化有利于存储或传递 PHP 的值,同时不丢失其类型和结构。

2、序列化函数serialize()

  • 描述:产生一个可存储的值的表示;
  • 语法:string serialize ( mixed $value )
  • 参数:$value可以是任何类型,除了资源外;
  • 返回:返回序列化之后的字符串,可以存储于任何地方。
  • 03 php mvc 第10天 面向对象笔记4 序列化
  • 03 php mvc 第10天 面向对象笔记4 序列化

3、反序列化函数unserialize()

  • 描述:从已存储的表示中创建 PHP 的值
  • 语法:mixed unserialize ( string $str )
  • 说明:对单一的已序列化的变量进行操作,将其转换回 PHP 的值。
  • 参数:$str为序列化后的字符串;
  • 返回:返回的是转换之后的值,可为 integer、float、string、array或 object。 如果传递的字符串不可序列化,则返回 FALSE,并产生一个 E_NOTICE。
  • 03 php mvc 第10天 面向对象笔记4 序列化

4、对象序列化

  • 对象的序列化过程,与其它变量数据一样;
  • 对象序列化的内容只能包含成员属性;
  • 当序列化对象时,serialize()函数会检查类中是否存在一个魔术方法 __sleep()。如果存在,该方法会先被调用,然后才执行序列化操作。此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。
  • 03 php mvc 第10天 面向对象笔记4 序列化
  • 03 php mvc 第10天 面向对象笔记4 序列化

5、对象反序列化

  • 对象的反序列化过程,与其它变量数据一样;
  • 当对象反序列化时,unserialize()函数会检查类中是否存在一个__wakeup()方法。如果存在,则会先调用 __wakeup 方法,预先准备对象需要的资源。 __wakeup() 经常用在反序列化操作中,进行一些初始化操作,例如重新建立数据库连接,或执行其它初始化操作。
  • 03 php mvc 第10天 面向对象笔记4 序列化

常用的魔术常量

  • __LINE__:当前行号
  • __FILE__:当前文件
  • __DIR__:当前目录
  • __FUNCTION__:当前函数
  • __CLASS__:当前类
  • __METHOD__:当前方法
  • __NAMESPACE__:当前命名空间