مجیک متد
__set_state() :این متد برای ایجاد یک شئ از یک آرایه بازگردانده شده توسط تابع
var_export() استفاده میشود. وقتی var_export() را روی یک شئ فراخوانی میکنید، اگر تابع __set_state() در کلاس مربوطه تعریف شده باشد، آن تابع برای بازسازی شئ از آرایه استفاده میشود.این متد یک ورودی آرایه برای بازسازی دریافت می کند.
نکته : این متد به صورت استاتیک نوشته می شود.
مثال :
class Fruit {
public $name;
public $color;
public static function __set_state($array) {
$obj = new self();
$obj->name = $array['name'];
$obj->color = $array['color'];
return $obj;
}
}
$fruit = new Fruit();
$fruit->name = 'banana';
$fruit->color = 'yellow';
var_export($fruit);
$array = array(
'name' => 'banana',
'color' => 'yellow'
);
$reconstructedFruit = eval('return ' . var_export($array, true) . ';');
var_dump($reconstructedFruit);
در این مثال، کلاس Fruit دارای دو ویژگی (name و color) است. تابع __set_state() در این کلاس تعریف شده است و آرایه ورودی را به عنوان آرگومان دریافت میکند. با استفاده از مقادیر آرایه، یک شئ جدید از کلاس ایجاد میشود و مقادیر ویژگیها را از آرایه تنظیم میکند. سپس شئ جدید را برمیگرداند.در این مثال، ابتدا یک شئ از کلاس ایجاد شده و با استفاده از تابع
var_export() نمایش داده میشود. سپس با استفاده از تابع var_export() بر روی یک آرایه، یک شئ جدید بازسازی میشود و نمایش داده میشود.متد
__set_state() زمانی استفاده می شود که شما میخواهید یک شئ را به صورت سریع بازسازی کنید و از یک آرایه استفاده کنید که توسط var_export() تولید شده است..