Serializable 介面

Serializable 介面

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

簡介

自定義序列化的介面。

實現此介面的類將不再支援 __sleep()__wakeup() 。 不論何時,只要有實例需要被序列化, serialize 方法都將被呼叫。它不會呼叫 __destruct(),除非在該方法中編寫了相關功能,否則它也不會有副作用(side effect)。 當數據被反序列化時,類將被感知並且呼叫合適的 unserialize() 方法而不是呼叫 __construct()。如果需要執行標準的構造器,應該在這個方法中進行處理。

警告

從 PHP 8.1.0 起,實現 Serializable 介面的類如果沒有同時實現 __serialize()__unserialize() 方法,將產生棄用警告。

介面摘要

interface Serializable {
/* 方法 */
public serialize(): ?string
public unserialize(string $data): void
}

示例 #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);

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"

目錄

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *