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

phppublic static function __set_state(array $properties): object

Voorbeeld

Kom ons skep 'n klas en implementeer die metode __set_state daarin:

php<?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:

phpobject(MyClass)#2 (2) {
  ["prop1"]=> string(1) "a"
  ["prop2"]=> string(1) "b"
}

Voorbeeld

Gebruik van __set_state met private eienskappe:

php<?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:

phpobject(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