PHP カスタム シリアル化インターフェイス シリアル化可能な使用法の分析と説明

jacklove
リリース: 2023-04-02 12:32:01
オリジナル
1986 人が閲覧しました

この記事では、主に 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 の Opcache アクセラレーションの詳細な説明

Laravel を使用して Gravatar アバター アドレスを生成する方法

パブリック、プライベートの詳細な説明、保護された、PHP での抽象 キーワードの関連した使用法


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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート