シリアル化は、変数を保存または送信できる文字列に変換するプロセスです;逆シリアル化は、使用に適したタイミングでこの文字列を元の変数に変換することです。これら 2 つのプロセスを組み合わせることで、データの保存と転送が容易になり、プログラムの保守性が向上します。
PHP でのシリアル化 と逆シリアル化は、それぞれ関数 serialize() と unserialize() を通じて実現できます。
string serialize ( mixed value )
serialize() は、値を表すバイト ストリームを含む文字列を返し、どこにでも保存できます。 (推奨学習: 初心者からマスターまでの PHP プログラミング )
これは、型や構造を失うことなく PHP 値を保存または転送するのに役立ちます。
シリアル化された文字列を PHP 値に戻したい場合は、unserialize() を使用できます。 Serialize() はリソース以外の任意の型を処理できます。それ自体への参照を含む配列を Serialize() することもできます。 Serialize() している配列/オブジェクト内の参照も保存されます。
オブジェクトをシリアル化するとき、PHP はシーケンス アクションの前にオブジェクトのメンバー関数 __sleep() の呼び出しを試みます。これにより、オブジェクトがシリアル化される前にクリーンアップ操作を実行できるようになります。同様に、unserialize() を使用してオブジェクトが復元されると、__wakeup() メンバー関数が呼び出されます。
注: PHP 3 では、オブジェクトのプロパティはシリアル化されますが、メソッドは失われます。 PHP 4 ではこの制限がなくなり、プロパティとメソッドの両方を保存できるようになりました。詳細については、「クラスとオブジェクト」の「シリアル化されたオブジェクト」セクションを参照してください。
serialize() 例
<?php // $session_data 是包含了当前用户 session 信息的多维数组。 // 我们使用 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)) { /* 出错 */ } } ?>
以上がphpのシリアル化とはどういう意味ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。