>  기사  >  백엔드 개발  >  PHP 사용자 정의 직렬화 인터페이스 직렬화 가능 사용 분석 및 설명

PHP 사용자 정의 직렬화 인터페이스 직렬화 가능 사용 분석 및 설명

jacklove
jacklove원래의
2018-07-04 17:46:001972검색

이 글은 주로 PHP 사용자 정의 직렬화 인터페이스의 사용법을 소개하고, 직렬화 가능 사용자 정의 직렬화 인터페이스의 개념, 기능, 정의 및 사용법을 예제 형식으로 분석합니다. 기사에서는 PHP 사용자 정의 직렬화 인터페이스 직렬화 가능 사용법을 설명합니다. 참조용으로 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

PHP Serialized는 사용자 정의 직렬화 인터페이스

입니다. 이 인터페이스를 구현하는 클래스는 더 이상 __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에서 public, private, protected, abstract 및 기타 키워드의 관련 사용법에 대한 자세한 토론


위 내용은 PHP 사용자 정의 직렬화 인터페이스 직렬화 가능 사용 분석 및 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.