360 of 410 menu

Methode __set_state

De methode __set_state is statisch en wordt automatisch aangeroepen wanneer de functie var_export op een object wordt gebruikt. Het moet een nieuwe instantie van de klasse teruggeven met herstelde eigenschappen. Deze methode is nuttig voor het serialiseren en deserialiseren van objecten.

Syntaxis

public static function __set_state(array $properties): object

Voorbeeld

Laten we een klasse maken en daarin de methode __set_state implementeren:

<?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); ?>

Resultaat van het uitvoeren van de code:

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

Voorbeeld

Het gebruik van __set_state met private eigenschappen:

<?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); ?>

Resultaat van het uitvoeren van de code:

object(PrivateClass)#2 (1) { ["secret":"PrivateClass":private]=> string(5) "12345" }

Zie ook

  • de functie var_export,
    die een variabele exporteert naar een string
  • de methode __sleep,
    die wordt aangeroepen vóór serialisatie van een object
  • de methode __wakeup,
    die wordt aangeroepen bij deserialisatie van een object
Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren