ホームページ  >  記事  >  バックエンド開発  >  PHP オブジェクトのシリアル化と逆シリアル化 PHP オブジェクトの保存と送信

PHP オブジェクトのシリアル化と逆シリアル化 PHP オブジェクトの保存と送信

WBOY
WBOYオリジナル
2016-07-25 08:57:471108ブラウズ
  1. class person {

  2. private $name;
  3. private $age;
  4. function __construct($name, $age) {
  5. $this->name = $name;
  6. $this->age = $age;
  7. }

  8. function Say() {

  9. echo "私の名前は: ".$this->name."
    echo " 私の年齢は: ".$this->age;
  10. }}

  11. $p1 = new Person("张三", 20);

  12. $ p1_string = Serialize($p1);//オブジェクトをシリアル化してファイルに書き込みます
  13. $fh = fopen("p1.text", "w");
  14. fwrite($fh, $p1_string);
  15. fclose($fh ) ;
  16. ?>

コードをコピーします
p1.text ファイルを開いて、内容を入力します。 O:6:"人物":2:{s:12:"人物名";s:4:"張三";s:11:"人物の年齢";i:20;} ただし、通常、上記のシリアル化によって生成された文字は直接解析されません。

2 番目、逆シリアル化:

  1. class person {

  2. private $name;
  3. function __construct($name, $age) {
  4. $this->name = $name; ;
  5. $this->age = $age;
  6. }
  7. function Say() {
  8. echo "私の名前は: ".$this->name."
    ";
  9. echo "年齢は: ".$this->age;
  10. }}

  11. $p2 = unserialize(file_get_contents("p1.text"));

  12. $p2 ->say() ;
  13. ?>
  14. コードをコピーします
出力結果: 私の名前は張三です。年齢は20歳です。 ヒント: シリアル化されたオブジェクトはそのメソッドをシリアル化できないため、シリアル化を解除するときは、現在のファイルに対応するクラスが含まれているか、対応するクラス ファイルが必要である必要があります。
ファイルはユーザーごとに個別に保存または書き込む必要があり、ファイル名を繰り返してはいけないため、シリアル化は限られたユーザーでのみ使用できます。 ユーザーがブラウザを正常に終了できない場合、ファイルが削除される保証はありません。オブジェクトはセッション変数として登録されます。 ユーザーの数が多い場合は、セッションを使用してオブジェクトを保存することを検討できます。

セッションの詳細については、次の記事を参照してください。

phpでのセッションの簡単な例

phpセッション操作クラス(例あり) phpセッション関数セット phpでのセッション有効期限の設定方法を詳しく解説 phpでのセッションアプリケーションの例 PHPセッションテクノロジーのセッション使用例 phpログアウトセッション情報 php5でのCookieとセッションの使用法 例:

session_start();

  • class person {
  • private $name;
  • function __construct($name, $age) {
  • $this-> ;name = $name;
  • $this->age = $age; }
  • function Say() {
  • echo "私の名前は: ".$this->name"
    "; echo " 私の年齢は: ".$this->age
  • }}

  • $_SESSION["p1"] = new Person("张三", 20);

  • ?> ;

  • コードをコピー
  • セッションを読む:
  • session_start();

    class person {
      private $name;
    1. function __construct($name, $age) {
    2. $this-> ;name = $name;
    3. $this->age = $age;
    4. }

    5. function Say() {

    6. echo "私の名前は:".$this->name . "
      ";
    7. echo " 私の年齢は次のとおりです: ".$this->age;
    8. }}
    9. $_SESSION["p1"] ->say();
    10. ?>
    11. < /p>
    12. コードをコピー
    13. 出力結果: 私の名前は張三です。年齢は20歳です。 シリアル化と同様、オブジェクトをセッション変数として登録しても、そのメソッドは保存されません。 したがって、セッション変数を読み取るときは、現在のファイルに対応するクラスが含まれているか、対応するクラス ファイルが必要である必要があります。
    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。