Phương thức __unserialize

Phương thức __unserialize được tự động gọi khi giải tuần tự hóa một đối tượng bằng hàm unserialize. Nó nhận một mảng làm tham số, mảng này chứa dữ liệu đã được chuẩn bị trước đó bởi phương thức __serialize.

Cú pháp

phppublic function __unserialize(array $data): void

Ví dụ

Tạo một lớp với các phương thức __serialize và __unserialize:

php<?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();
?>

Kết quả thực thi mã:

php'John, 30'

Ví dụ

Sử dụng __unserialize với các thuộc tính private:

php<?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();
?>

Kết quả thực thi mã:

php99.99

Xem thêm

  • phương thức __serialize,
    chuẩn bị đối tượng để tuần tự hóa
  • hàm serialize,
    chuyển đổi đối tượng thành chuỗi