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 →
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com