360 of 410 menu

Méthode __set_state

La méthode __set_state est statique et est appelée automatiquement lors de l'utilisation de la fonction var_export sur un objet. Elle doit retourner une nouvelle instance de la classe avec les propriétés restaurées. Cette méthode est utile pour la sérialisation et la déserialisation d'objets.

Syntaxe

public static function __set_state(array $properties): object

Exemple

Créons une classe et implémentons la méthode __set_state :

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

Résultat de l'exécution du code :

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

Exemple

Utilisation de __set_state avec des propriétés privées :

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

Résultat de l'exécution du code :

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

Voir aussi

  • la fonction var_export,
    qui exporte une variable en chaîne de caractères
  • la méthode __sleep,
    qui est appelée avant la sérialisation d'un objet
  • la méthode __wakeup,
    qui est appelée lors de la déserialisation d'un objet
Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser