Maison  >  Article  >  développement back-end  >  Interface de sérialisation personnalisée PHP Analyse et explication de l'utilisation sérialisable

Interface de sérialisation personnalisée PHP Analyse et explication de l'utilisation sérialisable

jacklove
jackloveoriginal
2018-07-04 17:46:001974parcourir

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 )
}

Exemple de description :

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

L'exemple de sortie ci-dessus :

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

Articles qui pourraient vous intéresser :

PHP Explication détaillée de la façon d'utiliser l'accélération Opcache

Comment utiliser Laravel pour générer l'adresse de l'avatar Gravatar

Discussion détaillée de public en PHP, utilisation connexe de mots-clés tels que privé, protégé, abstrait

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