PHP Serializable 接口


简介

PHP 库中存在 Serializable 接口,用于构建提供自定义序列化的类。PHP 的 serialize() 函数能够将大多数值序列化为一个可存储的表示。但是,无法序列化用户自定义类的对象。此接口使得这种情况成为可能。

语法

Serializable {
   /* Methods */
   abstract public serialize ( void ) : string
   abstract public unserialize ( string $serialized ) : void
}

方法

Serializable::serialize — 对象的字符串表示

Serializable::unserialize — 用序列化的字符串表示构建对象

内置的 serialze() 函数生成一个值的存储表示

serialize ( mixed $value ) : string

unserialize() 函数从一个存储的表示中创建一个 PHP 值

unserialize ( string $str [, array $options ] ) : mixed

Serializable 示例

在以下示例中,一个字符串变量被用作 myclass 的私有属性。当内置的 serialize() 函数使用这个类的对象作为参数时,serialize() 方法会自动被调用。类似地,unserialize() 函数会用字符串私有属性重建对象。

示例

 实际演示

<?php
class myclass implements Serializable {
   private $arr;
   public function __construct() {
      $this->arr = "TutorialsPoint India (p) Ltd";
   }
   public function serialize() {
      echo "Serializing object..
";       return serialize($this->arr);    }    public function unserialize($data) {       echo "Unserializing object..
";       $this->arr = unserialize($data);    }    public function getdata() {       return $this->arr;    } } $obj = new myclass; $serobj = serialize($obj); var_dump ($serobj); $obj1 = unserialize($serobj); var_dump($obj1->getdata()); ?>

输出

上述程序显示以下输出

Serializing object..
string(55) "C:7:"myclass":36:{s:28:"TutorialsPoint India (p) Ltd";}"
Unserializing object..
string(28) "TutorialsPoint India (p) Ltd"

更新于: 2020-09-21

531 次浏览

启动你的 职业

通过完成课程获得认证

开始
广告
© . All rights reserved.