ホームページ  >  記事  >  バックエンド開発  >  PHP のシリアル化と逆シリアル化の例の分析

PHP のシリアル化と逆シリアル化の例の分析

墨辰丷
墨辰丷オリジナル
2018-05-29 10:24:571487ブラウズ

この記事では、主に 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 &#39;Person.php&#39;;
  $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 のシリアル化と逆シリアル化の例の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。