PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのSerializableインターフェースとは?カスタムシリアライズの実装方法を解説

はじめに

PHPには、独自のシリアライズ処理(カスタムシリアライズ)を実装したクラスを作成するための Serializable インターフェースが用意されています。PHPの組み込み関数である serialize() は、ほとんどの値を保存可能な形式にシリアライズできますが、ユーザー定義クラスのオブジェクトはそのままではシリアライズできません。Serializableインターフェースを実装することで、この制限を回避できます。

Syntax(構文)

Serializable {
    /* メソッド */
    abstract public serialize ( void ) : string
    abstract public unserialize ( string $serialized ) : void
}

メソッド

Serializable::serialize — オブジェクトの文字列表現を返します。

Serializable::unserialize — シリアライズされた文字列表現からオブジェクトを再構築します。

また、組み込み関数の serialize() は、値の保存可能な表現を生成します。

serialize ( mixed $value ) : string

unserialize() 関数は、保存された表現からPHPの値を復元します。

unserialize ( string $str [, array $options ] ) : mixed

Serializableの実装例

次の例では、文字列変数を myclass のプライベートプロパティとして定義しています。組み込みの serialize() 関数の引数にこのクラスのオブジェクトを渡すと、serialize() メソッドが自動的に呼び出されます。同様に、unserialize() 関数を実行すると、文字列のプライベートプロパティを持つオブジェクトが再構築されます。

コード例

<?php
class myclass implements Serializable {
    private $arr;
    public function __construct() {
        $this->arr = "TutorialsPoint India (p) Ltd";
    }
    public function serialize() {
        echo "Serializing object..\n";
        return serialize($this->arr);
    }
    public function unserialize($data) {
        echo "Unserializing object..\n";
        $this->arr = unserialize($data);
    }
    public function getdata() {
        return $this->arr;
    }
}
$obj = new myclass;
$serobj = serialize($obj);
var_dump ($serobj);
$obj1 = unserialize($serobj);
var_dump($obj1->getdata());
?>

実行結果

上記のプログラムを実行すると、以下の出力が得られます。

Serializing object..
string(55) "C:7:"myclass":36:{s:28:"TutorialsPoint India (p) Ltd";}"
Unserializing object..
string(28) "TutorialsPoint India (p) Ltd"

このように、Serializableインターフェースを実装することで、オブジェクトがシリアライズ・アンシリアライズされる際の動作を自由にカスタマイズできます。オブジェクトの状態を独自の形式で保存したい場合や、シリアライズ時に特定の処理を挟みたい場合に非常に便利な仕組みです。

  1. PHPのstrrev()関数とは?文字列を反転させる使い方を解説

    strrev()関数は、PHPに組み込まれている関数の一つで、文字列を逆順(反転)に並び替えるために使用されます。引数として渡された文字列の文字順序を逆にし、その結果を返します。 構文 strrev(str) パラメータ str − 反転したい文字列を指定します。 戻り値 strrev()関数は、文字の並びを逆にした文字列を返します。 使用例 以下は、strrev()関数を使って文字列を反転させる基本的な例です。 <?php    echo strrev(Jack);?> 出力結果 上記のコードを実行すると、次のように表示され

  2. PHPのstrrchr()関数の使い方を解説!文字列内で最後に出現する文字を検索する方法

    PHPのstrrchr()関数は、文字列の中で指定した文字(または文字列)が最後に出現する位置を見つけ、その位置から文字列の末尾までを取得するために使用される組み込み関数です。ファイルの拡張子を取り出すなど、実用的な場面でよく活用されます。 構文 strrchr(str, char) パラメータ str − 検索対象となる文字列を指定します。 char − 文字列の中から探したい文字を指定します。charに複数の文字が含まれている場合は、最初の1文字のみが使用される点に注意してください。 戻り値 strrchr()関数は、指定した文字が文字列内に最後に出現した位置から文字列の末尾までのすべ