PHP 関数の Serialize() と unserialize() の説明とケース。シリアル化された文字列を PHP 値に変換するには、unserialize() を使用します。 Serialize() はリソース以外の任意の型を処理できます。それ自体への参照を含む配列を Serialize() することもできます。 Serialize() している配列/オブジェクト内の参照も保存されます。
serialize() は文字列を返します。この文字列には値を表すバイト ストリームが含まれており、どこにでも保存できます。これにより、型や構造を失うことなく、PHP 値の保存や受け渡しが容易になります。
シリアル化された文字列を PHP 値に戻したい場合は、unserialize() を使用できます。 Serialize() はリソース以外の任意の型を処理できます。それ自体への参照を含む配列を Serialize() することもできます。 Serialize() している配列/オブジェクト内の参照も保存されます。
オブジェクトをシリアル化するとき、PHP はシーケンス アクションの前にオブジェクトのメンバー関数 __sleep() の呼び出しを試みます。これにより、オブジェクトがシリアル化される前にクリーンアップ操作を実行できるようになります。同様に、unserialize() を使用してオブジェクトが復元されると、__wakeup() メンバー関数が呼び出されます。
注: PHP 3 では、オブジェクトのプロパティはシリアル化されますが、メソッドは失われます。 PHP 4 ではこの制限がなくなり、プロパティとメソッドの両方を保存できるようになりました。詳細については、「クラスとオブジェクト」の「シリアル化されたオブジェクト」セクションを参照してください。
serialize() と unserialize() については、PHP マニュアルで説明されています。
serialize ? 値の保存可能な表現を生成します
serialize ? 保存された値の表現を生成します
unserialize ?
unserialize ? 保存された表現から PHP 値を作成します
serialize、「シリアル化、継続的」と訳され、通常は「シリアル化」と呼ばれます
この関数は、特に unserialize と併用すると非常に便利です
より便利だと思います場所は、データをデータベースに保存するとき、またはファイルに記録するときです
もちろん、この種のデータは比較的複雑でなければなりません (複雑ではなく、シリアル化する必要もありません。少なくとも 1 つある必要があると思います (配列)であり、データベース内の「インデックスまたは主キー」ではありません。もちろん、このデータベース フィールドはシステム内の検索プログラムとは何の関係もないことが最善です。または、
//より単純な
$array = array();
$array['key'] = 'website';
$array['value' を変更します。 ]='www.isoji.org ';
$a = Serialize($array);
echo $a;
unset($array);
$a = unserialize($a);
print_r($a);
//クラスを宣言する
class Dog {
var $name;
var $age;
var $owner;
function Dog($in_name="unnamed",$in_age="0",$in_owner="不明") {
$this->name = $in_name;
$this->age = $in_age;
$this->owner = $in_owner;
}
function getage() {
return ($ this->age * 365) ;
}
function getowner() {
return ($this->owner);
}
function getname() {
return ($this->name);
}
}
//インスタンス化このクラス
$ourfirstdog = new Dog("Rover",12,"Lisa and Graham");
//serialize 関数を使用して、このインスタンスをシリアル化された文字列に変換します
$dogdisc = Serialize( $ourfirstdog);
print $dogdisc; //$ourfirstdog は文字列 O:3:"dog":3:{s:4:"name";s:5:"Rover";s:3: にシリアル化されました"年齢";i :12;s:5:"所有者";s:15:"リサとグラハム";}
print '
';
/*
-------- ------------------ -------------------------------- --------------------------------------
ここに保管できます文字列 $dogdisc セッション、Cookie、データベース、PHP ファイルなどの任意の場所
----------------------------------- ---------------------------------------------------- ----
*/
//ここでログアウトします このクラス
unset($ourfirstdog);
/* 操作を復元*/
/*
------------- ------------------ -------------------------------- ------------------ -----------
ここで文字列 $dogdisc を、セッション、クッキー、データベースなどの保存場所から読み取ります。 php ファイル
-------------- ----------------------------- ----------------- ------------------------
*/
/ /ここでは unserialize() を使用してシリアル化されたオブジェクトを復元します
$pet = unserialize($dogdisc); //この時点の $pet はすでに前の $ourfirstdog オブジェクトです
//年齢と名前の属性を取得します
$old = $pet->getage();
$name = $pet-> ;getname();
//このクラスは、現時点ではインスタンス化せずに引き続き使用でき、属性と値は次のように維持されます。連載前の状態
print "私たちの最初の犬は $name と呼ばれ、$old days old
print '
';
?>