Phương thức __sleep

Phương thức __sleep được gọi tự động khi tuần tự hóa một đối tượng bằng hàm serialize. Phương thức này phải trả về một mảng chứa tên các thuộc tính cần được đưa vào biểu diễn tuần tự hóa của đối tượng.

Cú pháp

phppublic function __sleep(): array;

Ví dụ

Tạo một lớp và triển khai phương thức __sleep để chỉ tuần tự hóa các thuộc tính nhất định:

php<?php
class User {
  public $name = 'John';
  public $age = 30;
  private $password = '12345';
  
  public function __sleep() {
    return ['name', 'age'];
  }
}

$user = new User();
echo serialize($user);
?>

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

php'O:4:"User":2:{s:4:"name";s:4:"John";s:3:"age";i:30;}'

Ví dụ

Sử dụng __sleep để loại trừ dữ liệu bí mật khỏi quá trình tuần tự hóa:

php<?php
class Account {
  public $login = 'admin';
  private $password = 'secret';
  public $email = 'admin@example.com';
  
  public function __sleep() {
    return ['login', 'email'];
  }
}

$account = new Account();
echo serialize($account);
?>

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

php'O:7:"Account":2:{s:5:"login";s:5:"admin";s:5:"email";s:17:"admin@example.com";}'

Xem thêm

  • phương thức __wakeup,
    được gọi khi giải tuần tự hóa đối tượng
  • hàm serialize,
    thực hiện tuần tự hóa dữ liệu