在线文档教程
PHP
类和函数 | Classes and Functions

Serializable (interface)

The Serializable interface

介绍

(PHP 5 >= 5.1.0, PHP 7)

用于定制序列化的接口。

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

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

界面简介

Serializable {

/* Methods */

abstract public string serialize ( void )

abstract public void unserialize ( string $serialized )

}

Example #1 Basic usage

<?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() ?>

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

string(38) "C:3:"obj":23:{s:15:"My private data";}" string(15) "My private data"

目录

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

  • Serializable :: unserialize - 构造对象

← ArrayAccess::offsetUnset

Serializable::serialize →