Computer >> 컴퓨터 >  >> 프로그램 작성 >> PHP

PHP 직렬화 가능한 인터페이스

<시간/>

소개

직렬화 가능 인터페이스는 맞춤형 직렬화를 제공하는 클래스를 빌드하기 위해 PHP 라이브러리에 있습니다. PHP의 serialize() 함수는 대부분의 값을 저장 가능한 표현으로 직렬화할 수 있습니다. 그러나 사용자 정의 클래스의 개체는 직렬화할 수 없습니다. 이 인터페이스를 통해 가능합니다.

구문

Serializable {
   /* Methods */
   abstract public serialize ( void ) : string
   abstract public unserialize ( string $serialized ) : void
}

방법

직렬화 가능::직렬화 — 객체의 문자열 표현

직렬화 가능::직렬화 해제 — 직렬화된 문자열 표현에서 개체를 구성합니다.

내장된 serialze() 함수 값의 저장 가능한 표현을 생성합니다.

serialize ( mixed $value ) : string

직렬화 해제() 함수 저장된 표현에서 PHP 값 생성

unserialize ( string $str [, array $options ] ) : mixed

직렬화 가능한 예

다음 예에서 문자열 변수는 myclass의 private 속성으로 사용됩니다. 내장된 serialize() 함수가 이 클래스의 객체를 인수로 사용하면 serialize() 메서드가 자동으로 호출됩니다. 마찬가지로 unserialize() 함수는 문자열 prvate 속성으로 객체를 재구성합니다.

예시

<?php
class myclass implements Serializable {
   private $arr;
   public function __construct() {
      $this->arr = "TutorialsPoint India (p) Ltd";
   }
   public function serialize() {
      echo "Serializing object..\n";
      return serialize($this->arr);
   }
   public function unserialize($data) {
      echo "Unserializing object..\n";
      $this->arr = unserialize($data);
   }
   public function getdata() {
      return $this->arr;
   }
}
$obj = new myclass;
$serobj = serialize($obj);
var_dump ($serobj);
$obj1 = unserialize($serobj);
var_dump($obj1->getdata());
?>

출력

위의 프로그램은 다음과 같은 출력을 보여줍니다.

Serializing object..
string(55) "C:7:"myclass":36:{s:28:"TutorialsPoint India (p) Ltd";}"
Unserializing object..
string(28) "TutorialsPoint India (p) Ltd"