Maison  >  Article  >  développement back-end  >  Analyse de l'utilisation de l'interface de sérialisation personnalisée PHP Serialisable

Analyse de l'utilisation de l'interface de sérialisation personnalisée PHP Serialisable

不言
不言original
2018-06-19 11:10:091952parcourir

Cet article présente principalement l'utilisation de l'interface de sérialisation personnalisée PHP Serialisable et analyse le concept, la fonction, la définition et l'utilisation de l'interface de sérialisation personnalisée Serialisable sous forme d'exemples. Les amis dans le besoin peuvent s'y référer

. L'exemple de cet article décrit l'utilisation de l'interface de sérialisation personnalisée PHP Serialisable. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

PHP Seriallessly est une interface de sérialisation personnalisée . Les classes qui implémentent cette interface ne prendront plus en charge __sleep() et __wakeup(). La méthode serialize sera automatiquement appelée lorsqu'une instance de la classe est sérialisée, et __destruct() ne sera pas appelée ni n'aura d'autres effets. Lorsqu'une instance d'une classe est désérialisée, la méthode unserialize() est appelée et __construct() n'est pas exécutée. Le résumé de l'interface est le suivant :

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

Description de l'exemple :

<?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对象的析构函数
?>

Le résultat de l'exemple ci-dessus :

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

Ce qui précède est tout le contenu de cet article. J'espère qu'il vous sera utile. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

À propos de la façon dont PHP implémente la fonction de définition et d'inversion des listes chaînées

À propos de PHP orienté objet affaires Mode Script

À propos du transfert de données en PHP CURL

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn