Phương thức __set_state
Phương thức __set_state là phương thức tĩnh và được gọi tự động khi sử dụng hàm var_export trên một đối tượng. Nó phải trả về một thể hiện mới của lớp với các thuộc tính đã được khôi phục. Phương thức này hữu ích cho việc tuần tự hóa và giải tuần tự hóa đối tượng.
Cú pháp
public static function __set_state(array $properties): object
Ví dụ
Tạo một lớp và triển khai phương thức __set_state trong đó:
<?php
class MyClass {
public $prop1;
public $prop2;
public function __construct($val1, $val2) {
$this->prop1 = $val1;
$this->prop2 = $val2;
}
public static function __set_state($array) {
return new self($array['prop1'], $array['prop2']);
}
}
$obj = new MyClass('a', 'b');
$exported = var_export($obj, true);
eval('$newObj = ' . $exported . ';');
var_dump($newObj);
?>
Kết quả thực thi mã:
object(MyClass)#2 (2) {
["prop1"]=> string(1) "a"
["prop2"]=> string(1) "b"
}
Ví dụ
Sử dụng __set_state với các thuộc tính private:
<?php
class PrivateClass {
private $secret;
public function __construct($value) {
$this->secret = $value;
}
public static function __set_state($array) {
$obj = new self($array['secret']);
return $obj;
}
}
$privateObj = new PrivateClass('12345');
$exported = var_export($privateObj, true);
eval('$newPrivateObj = ' . $exported . ';');
var_dump($newPrivateObj);
?>
Kết quả thực thi mã:
object(PrivateClass)#2 (1) {
["secret":"PrivateClass":private]=> string(5) "12345"
}
Xem thêm
-
hàm
var_export,
hàm xuất một biến ra chuỗi -
phương thức
__sleep,
phương thức được gọi trước khi tuần tự hóa đối tượng -
phương thức
__wakeup,
phương thức được gọi khi giải tuần tự hóa đối tượng