360 of 410 menu

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
Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối