ホームページ >バックエンド開発 >PHPチュートリアル >PHP のシリアル化と逆シリアル化の例の分析
この記事では、主に PHP のオブジェクト指向プログラミングと、シリアライズおよびアンシリアライズ関数の使用スキルを分析します。次の
の例を参照してください。この記事では、PHP のシリアル化と逆シリアル化について説明します。参考のために皆さんと共有してください。詳細は次のとおりです。
オブジェクトもメモリに格納されるデータ型であり、その寿命は通常、オブジェクトを生成したプログラムの終了とともに終了します。場合によっては、オブジェクトの状態を保存し、必要に応じて復元することが必要になる場合があります。シリアル化では、各オブジェクトがバイナリ文字列に変換されます。
<?php class Person { var $name; var $sex; var $age; function __construct($name = "", $sex = "男", $age = 22) { $this->name = $name; $this->sex = $sex; $this->age = $age; } function say() { echo $this->name . "在说话<br/>"; } function run() { echo "在走路·<br/>"; } //串行化的时候自动调用,成员$sex被忽略,只串行$name,$age function __sleep() { $arr = array("name","age"); return $arr; } //反串行化时自动调用 function __wakeup() { $this->age = 33; } } class Student extends Person { var $school; function __construct($name = "", $sex = "男", $age = 22,$school="") { parent::__construct($name,$sex,$age); $this->school = $school; } function study() { echo $this->name."正在".$this->school."学习<br/>"; } } class Teacher extends Student { var $wage; function teaching() { echo $this->name."正在".$this->school."教学,每月工资为".$this->wage."<br/>"; } //如果调用了不存在的方法,将会自动调用__call(),不会报错 function __call($functionName,$args) { echo "函数名:".$functionName; print_r($args); echo "<br/>"; } } $teacher1 = new Teacher("kaifu","男",22); $teacher1->school = "edu"; $teacher1->wage = 4000; $teacher1->say(); $teacher1->study(); $teacher1->teaching(); $teacher1->hello(1,2,3); ?>
<?php require_once 'Person.php'; $teacher = new Teacher("tom","男",22); $teacher_str = serialize($teacher); file_put_contents("file.txt", $teacher_str); //反串行化 $objStr = file_get_contents("file.txt"); $t = unserialize($objStr); echo $t->age; ?>
シリアル化ファイル.txt:
O:7:"Teacher":2:{s:4:"name";s:3:"tom";s:3:"age";i:22;}
以上がこの記事の全内容です、皆様のお役に立てれば幸いですさんの勉強。
関連する推奨事項:
PHP オブジェクト指向 - オブジェクト シリアル化 Serialize()、__sleep()、__wakeup() コードの詳細
PHP での シリアル化の使用
以上がPHP のシリアル化と逆シリアル化の例の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。