TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 609 subscribers
Post #55 219
#magic_method #oop #php
مجیک متد __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() تولید شده است.
.
More from @amirhdeveloper
  1. Oct 8, 2026‍ اولین نسخه‌ی «قیچی» منتشر شد! ✂️ راست‌ش چند وقتی هست که پیامک‌های تبلیغاتی و اسپم، شدیدا…
  2. Oct 7, 2026بیاید از قدرت های لاراگرام بگم لاراگرام یک full-stack و ai-ready فریمورک برای توسعه ربات ه…
  3. Sep 30, 2026پکیج LaraGram Sentinel منتشر شد؛ یک پنل مانیتورینگ که هیچ چیزی از زیر دستش در نمی‌ره! تمام…
  4. Sep 23, 2026از امروز با کاهش شدید حاکرها مواجه میشیم
  5. Sep 19, 2026🔴 سوال سوم دو Region دارید: US-East و EU-West. کاربران در هر دو Region هستند. سیستم باید…
  6. Sep 19, 2026🟠 سوال دوم فرض کنید Service A به Service B درخواست می‌زند. B به‌دلیل overload، latency با…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →