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() も参照ください。