ホームページ  >  記事  >  バックエンド開発  >  PHP カスタム シリアル化インターフェイスの使用状況分析 Serializable

PHP カスタム シリアル化インターフェイスの使用状況分析 Serializable

不言
不言オリジナル
2018-06-19 11:10:092001ブラウズ

この記事では、主に PHP カスタム シリアル化インターフェイス Serializable の使用法を紹介し、Serializable カスタム シリアル化インターフェイスの概念、機能、定義、使用法をサンプルの形で分析します。

この記事の例では、PHP のカスタム シリアル化インターフェイス Serializable の使用法について説明します。参考までに皆さんと共有してください。詳細は次のとおりです。

PHP Serializable はカスタム シリアル化インターフェイス です。 このインターフェイスを実装するクラスは、__sleep() と __wakeup() をサポートしなくなります。クラスのインスタンスがシリアル化されると、serialize メソッドが自動的に呼び出され、__destruct() が呼び出されたり、他の効果が生じたりすることはありません。クラスのインスタンスが逆シリアル化されると、unserialize() メソッドが呼び出され、__construct() は実行されません。 インターフェイスの概要は次のとおりです:

Serializable {
  abstract public string serialize ( void )
  abstract public mixed unserialize ( string $serialized )
}

例の説明:

<?php
/**
 * 类自定义序列化相关操作
 *
 * @author 疯狂老司机
 */
class obj implements Serializable {
  private $data;
  private $step = 0;
  /*
   * 构造函数
   */
  public function __construct() {
    $this->data = "这是一段测试文字<br>";
    echo &#39;调用构造函数<br>&#39;;
  }
  public function serialize() {
    return serialize($this->data);
  }
  public function unserialize($data) {
    $this->step++;
    $this->data = unserialize($data);
  }
  /*
   * 析构函数
   */
  public function __destruct() {
    echo &#39;step:&#39;.$this->step.&#39; 调用析构函数<br>&#39;;
  }
  public function getData(){
    return $this->data;
  }
}
$obj = new obj;// 调用obj::__construct
$ser = serialize($obj);// 调用obj::serialize
$newobj = unserialize($ser);// 调用obj::unserialize
echo $newobj->getData();// 调用obj::getData
// 执行结束,调用析构函数,先执行newobj对象的析构函数在执行obj对象的析构函数
?>

上記の例の出力:

调用构造函数
这是一段测试文字
step:1 调用析构函数
step:0 调用析构函数

上記がこの記事の内容全体です、皆さんの学習に役立つことを願っています。その他の関連コンテンツについては、PHP 中国語 Web サイトに注目してください。

関連する推奨事項:

PHP がリンク リストの定義と反転関数を実装する方法について

PHP オブジェクト指向についてトランザクション スクリプト モード

#PHP CURL でのデータ転送について

#

以上がPHP カスタム シリアル化インターフェイスの使用状況分析 Serializableの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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