首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Serializable (interface)

介绍

(PHP 5 >= 5.1.0, PHP 7)

用于定制序列化的接口。

实现此接口的类不再支持__sleep()和__wakeup()。只要需要序列化实例,就会调用序列化方法。这不会调用__destruct()或有任何其他副作用,除非在方法内编程。当数据被反序列化时,该类是已知的,并且将相应的unserialize()方法作为构造函数调用,而不是调用__construct()。如果您需要执行标准构造函数,则可以在该方法中执行此操作。

请注意,现在实现此接口的类的旧实例(在类实现接口之前已经序列化)是一个非序列化的对象,因此将调用__wakeup()而不是serialize方法,这对于迁移目的可能很有用。

界面简介

Serializable {

/* Methods */

代码语言:javascript
复制
abstract public string serialize ( void )
代码语言:javascript
复制
abstract public void unserialize ( string $serialized )

}

Example #1 Basic usage

代码语言:javascript
复制
<?php
class?obj?implements?Serializable?{
????private?$data;
????public?function?__construct()?{
????????$this->data?=?"My?private?data";
????}
????public?function?serialize()?{
????????return?serialize($this->data);
????}
????public?function?unserialize($data)?{
????????$this->data?=?unserialize($data);
????}
????public?function?getData()?{
????????return?$this->data;
????}
}

$obj?=?new?obj;
$ser?=?serialize($obj);

var_dump($ser);

$newobj?=?unserialize($ser);

var_dump($newobj->getData());
?>

上面的例子会输出类似于:

代码语言:javascript
复制
string(38) "C:3:"obj":23:{s:15:"My private data";}"
string(15) "My private data"

目录

  • Serializable :: serialize - 对象的字符串表示形式
  • Serializable :: unserialize - 构造对象

← ArrayAccess::offsetUnset

Serializable::serialize →

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com