ホームページ  >  記事  >  バックエンド開発  >  php - シリアル化可能なインターフェイス

php - シリアル化可能なインターフェイス

伊谢尔伦
伊谢尔伦オリジナル
2017-03-18 11:35:411972ブラウズ

カスタマイズされたシリアル化インターフェース

このインターフェースを実装するクラスは、__sleep() と __wakeup() をサポートしなくなります。インスタンスをシリアル化する必要がある場合は、serialize メソッドが呼び出されます。このメソッドがプログラムで呼び出されない限り、__destruct() を呼び出したり、他の効果をもたらしたりすることはありません。データが逆シリアル化されると、クラスはそれを認識し、__construct() を呼び出す代わりに適切な unserialize() メソッドを呼び出します。標準コンストラクターを実行する必要がある場合は、このメソッドで処理する必要があります。

インターフェイスの概要

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

例 #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"

Method List

Serializable::serialize — オブジェクトの文字列表現

Serializable::unserialize — Construct Object

関連記事:

Javaシリアル化におけるSerializableとExternalizableの違いのサンプルコード

SerializableのJavaシリアル化

java Serializationオブジェクトserializableデータの読み書きの例

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHP共通関数集次の記事:PHP共通関数集