मेथड __set_state
मेथड __set_state स्थैतिक है और ऑब्जेक्ट पर फ़ंक्शन var_export का उपयोग करते समय स्वचालित रूप से कॉल किया जाता है। इसे पुनर्स्थापित गुणों के साथ कक्षा का एक नया उदाहरण वापस करना चाहिए। यह मेथड ऑब्जेक्ट्स को क्रमबद्ध करने और उनके क्रम को हटाने के लिए उपयोगी है।
वाक्य - विन्यास
public static function __set_state(array $properties): object
उदाहरण
आइए एक क्लास बनाएं और इसमें __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);
?>
कोड निष्पादित करने का परिणाम:
object(MyClass)#2 (2) {
["prop1"]=> string(1) "a"
["prop2"]=> string(1) "b"
}
उदाहरण
निजी गुणों के साथ __set_state का उपयोग:
<?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);
?>
कोड निष्पादित करने का परिणाम:
object(PrivateClass)#2 (1) {
["secret":"PrivateClass":private]=> string(5) "12345"
}
यह भी देखें
-
फ़ंक्शन
var_export,
जो एक वेरिएबल को स्ट्रिंग में निर्यात करता है -
मेथड
__sleep,
जो ऑब्जेक्ट को क्रमबद्ध करने से पहले कॉल किया जाता है -
मेथड
__wakeup,
जो ऑब्जेक्ट के क्रम को हटाते समय कॉल किया जाता है