__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পদ্ধতি,
যা অবজেক্ট ডিসিরিয়ালাইজেশনের সময় কল হয়