Metode __set_state
Die metode __set_state is staties en word outomaties aangeroep wanneer die funksie var_export op 'n objek gebruik word. Dit moet 'n nuwe instansie van die klas met herstelde eienskappe teruggee. Hierdie metode is nuttig vir die serialisering en deserialisering van voorwerpe.
Sintaksis
public static function __set_state(array $properties): object
Voorbeeld
Kom ons skep 'n klas en implementeer die metode __set_state daarin:
<?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);
?>
Uitvoerresultaat van die kode:
object(MyClass)#2 (2) {
["prop1"]=> string(1) "a"
["prop2"]=> string(1) "b"
}
Voorbeeld
Gebruik van __set_state met private eienskappe:
<?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);
?>
Uitvoerresultaat van die kode:
object(PrivateClass)#2 (1) {
["secret":"PrivateClass":private]=> string(5) "12345"
}
Sien ook
-
die funksie
var_export,
wat 'n veranderlike na 'n string uitvoer -
die metode
__sleep,
wat voor serialisering van 'n objek aangeroep word -
die metode
__wakeup,
wat by deserialisering van 'n objek aangeroep word