소개
직렬화 가능 인터페이스는 맞춤형 직렬화를 제공하는 클래스를 빌드하기 위해 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"