serialize

(PHP 3 >= 3.0.5, PHP 4, PHP 5)

serialize --  値の保存可能な表現を生成する

説明

string serialize ( mixed value )

serialize() は、value の 保存可能なバイトストリーム表現を含む文字列を返します。

型や構造を失わずに PHP の値を保存または渡す際に有用です。

シリアル化された文字列を PHP の値に戻すには、 unserialize() を使用してください。 serialize() は、resource 以外の 全ての型を処理します。自分自身への参照を含む配列を serialize() することも可能です。 serialize() している配列/オブジェクト内の 循環参照も保存されます。その他の参照は失われます。

PHP は、シリアル化の前にまずメンバ関数 __sleep() のコールを試みます。ここで、シリアル化の前のオブジェクトの後始末処理 などを行います。同様に、unserialize() で オブジェクトを復元した際にはメンバ関数 __wakeup() がコールされます。

注意: これは 4.0.7 より前のバージョンでは正しく動作しません。

注意: PHP 3 では、オブジェクトのプロパティはシリアル化されますが、 メソッドは失われます。PHP 4 ではこの制限は取り除かれ、プロパティ とメソッドの両方を保存します。より詳細な情報については、 オブジェクトとクラスオブジェクトのシリアル化 の節を参照ください。

PHP の組み込みオブジェクトをシリアル化することはできません。

例 1. serialize() の例

<?php
// $session_data はカレントユーザーのセッション情報を含む多次元配列を
// 保持しています。リクエストの最後にこれをデータベースに保存するために
//  serialize() を使用します。

$conn = odbc_connect("webdb", "php", "chicken");
$stmt = odbc_prepare($conn,
      
"UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $PHP_AUTH_USER);
if (!
odbc_execute($stmt, &$sqldata)) {
    
$stmt = odbc_prepare($conn,
     
"INSERT INTO sessions (id, data) VALUES(?, ?)");
    if (!
odbc_execute($stmt, &$sqldata)) {
        
/* 何か問題があったようです.. */
    
}
}
?>

unserialize() も参照ください。