360 of 410 menu

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
Afrikaans
AzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp