메서드 __unserialize
메서드 __unserialize는 함수 unserialize를 사용하여 객체를 역직렬화할 때 자동으로 호출됩니다.
이 메서드는 매개변수로 이전에 __serialize 메서드에 의해 준비된 데이터가 담긴 배열을 받습니다.
구문
public function __unserialize(array $data): void
예제
__serialize와 __unserialize 메서드를 가진 클래스를 만들어 봅시다:
<?php
class User {
private $name;
private $age;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
public function __serialize(): array {
return ['name' => $this->name, 'age' => $this->age];
}
public function __unserialize(array $data): void {
$this->name = $data['name'];
$this->age = $data['age'];
}
public function getInfo() {
return $this->name . ', ' . $this->age;
}
}
$user = new User('John', 30);
$serialized = serialize($user);
$unserialized = unserialize($serialized);
echo $unserialized->getInfo();
?>
코드 실행 결과:
'John, 30'
예제
비공개 속성과 함께 __unserialize 사용하기:
<?php
class Product {
private $id;
private $price;
public function __construct($id, $price) {
$this->id = $id;
$this->price = $price;
}
public function __serialize(): array {
return ['id' => $this->id, 'price' => $this->price];
}
public function __unserialize(array $data): void {
$this->id = $data['id'];
$this->price = $data['price'];
}
public function getPrice() {
return $this->price;
}
}
$product = new Product(123, 99.99);
$serialized = serialize($product);
$unserialized = unserialize($serialized);
echo $unserialized->getPrice();
?>
코드 실행 결과:
99.99
함께 보기
-
객체를 직렬화하도록 준비하는 메서드
__serialize -
객체를 문자열로 변환하는 함수
serialize