PHP オブジェクト指向のシリアル化と逆シリアル化の内容は、PHP において非常に重要です。この記事では、それに関連するコードの内容について説明します。
シリアル化: オブジェクトの状態情報を、保存または送信できる形式に変換するプロセス。
警告: さまざまな言語で使用されるシリアル化メカニズムは、多くの場合異なり、互換性がありません。
1 Serialize Serialize()
string serialize ( mixed $value )
serialize() 型と構造を失うことなく、値を表すバイト ストリームを含む文字列を返します。
serialize() は、リソースを除く任意の型を処理できます。それ自体への参照を含む配列を Serialize() することもできます。
オブジェクトをシリアル化するとき、PHP はシーケンス アクションの前にオブジェクトのメンバー関数 __sleep() の呼び出しを試みます。これにより、オブジェクトがシリアル化される前にクリーンアップ操作を実行できるようになります。
2 Deserialize unserialize()
mixed unserialize (string $str)
シリアル化された文字列を PHP の値に戻したい場合は、 unserialize ( )。
unserialize() を使用してオブジェクトを復元する場合、__wakeup() メンバー関数が呼び出されます。
別のファイル内のオブジェクトを逆シリアル化する場合は、逆シリアル化する前にオブジェクトのクラスを定義する必要があります。
// オブジェクトのクラスが定義されていない場合にデシリアライズすると、メソッドなしで次の __PHP_Incomplete_Class オブジェクトが取得されます。
__PHP_Incomplete_Class Object ( [__PHP_Incomplete_Class_Name] => Person [name:Person:private] => jack [age:Person:private] => 18 [sex:Person:private] => M ) <!--?php class Person { private $name; private $age; private $sex; function __construct($name, $age, $sex) { $this--->name = $name; $this->age = $age; $this->sex = $sex; } function __sleep() { $arr = array('name', 'age'); return $arr; } function __wakeup() { $this->sex = 'F'; $this->age = 20; } function say() { echo 'My name is: ' . $this->name . ',My age is: ' . $this->age . ',My sex is: ' . $this->sex . PHP_EOL; } } $p = new Person('jack', 18, 'M'); $p->say(); // My name is: jack,My age is: 18,My sex is: M $s = serialize($p); //得到(O:6:"Person":3:{s:12:"Personname";s:4:"jack";s:11:"Personage";i:18;s:11:"Personsex";s:1:"M";})字符串,有特殊字符 echo $s . PHP_EOL; $o = unserialize($s); // 反序列化之前必须要定义这个对象的类 $o->say(); // My name is: jack,My age is: 20,My sex is: F
この記事では、HP オブジェクト指向のシリアル化および逆シリアル化関連のコードの内容について詳しく説明します。関連する知識については、PHP 中国語 Web サイトを参照してください。
関連する推奨事項:
PHP メソッド (コード) を使用してモバイル ログインであるかどうかを判断する方法
PHP のマジック メソッド __CLASS__ を使用して、クラス名の関連操作を取得します
以上がPHP オブジェクト指向のシリアル化と逆シリアル化の関連コードを説明するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。