php—Serializable接口

伊谢尔伦
伊谢尔伦asal
2017-03-18 11:35:412010semak imbas

自定义序列化的接口

实现此接口的类将不再支持 __sleep() 和 __wakeup()。不论何时,只要有实例需要被序列化,serialize 方法都将被调用。它将不会调用 __destruct() 或有其他影响,除非程序化地调用此方法。当数据被反序列化时,类将被感知并且调用合适的 unserialize() 方法而不是调用 __construct()。如果需要执行标准的构造器,你应该在这个方法中进行处理。

接口摘要

Serializable {
    /* 方法 */
    abstract public string serialize ( void )
    abstract public mixed unserialize ( string $serialized )
}

Example #1 使用范例

<?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);
    $newobj = unserialize($ser);
    var_dump($newobj->getData());
?>

以上例程的输出类似于:

string(15) "My private data"

方法列表

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

Serializable::unserialize — 构造对象

相关文章:

Java序列化Serializable和Externalizable区别的示例代码

Java序列化之Serializable

java 序列化对象 serializable 读写数据的实例

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn