TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 609 subscribers
Post #52 192
#magic_method #oop #php
مجیک متد های __serialize() و __unserialize() :
این متد ها به شما این امکان را می‌دهند تا روند serialize و unserialize شدن یک شئ را کنترل کنید.

متد __serialize() : این متد برای تعریف فرمت داده‌ای serialize شده استفاده می‌شود. در هنگام استفاده از تابع serialize() فراخوانی می‌شود و باید یک آرایه از داده‌ها را برگرداند که به عنوان نمایش serialize شده استفاده می‌شود. شما می‌توانید هر نوع داده‌ای را در این آرایه شامل کنید، از جمله داده‌های عددی، استرینگ، آرایه، آبجکت و ...

متد __unserialize() : این متد برای بازسازی یک شئ از یک نمایش serialize شده استفاده می‌شود. این تابع در هنگام استفاده از تابع unserialize() فراخوانی می‌شود و باید داده‌های serialize شده را بازیابی کرده و یک شئ جدید را برگرداند.

مثال:
class Fruit {
public $name;
public $color;

public function __construct($name, $color) {
$this->name = $name;
$this->color = $color;
}

public function __serialize(): array {
return [
'name' => $this->name,
'color' => $this->color
];
}

public function __unserialize(array $data): void {
$this->name = $data['name'];
$this->color = $data['color'];
}
}

$fruit = new Fruit('banana', 'yellow');

$serialized = serialize($fruit);
echo $serialized . "\n";

// Result:
// O:5:"Fruit":2:{s:4:"name";s:6:"banana";s:5:"color";s:6:"yellow";}

$unserialized = unserialize($serialized);
echo $unserialized->name . "\n";
echo $unserialized->color . "\n";

// Result:
// banana
// yellow

در
مثال بالا در متد
__serialize()
مقادیری که باید serialize شوند بازگردانده می شود و در متد
__unserialize
داده های serialize شده دریافت می شود و پس از unserialize مقادیر آن در ویژگی های name و color وارد می شود.

فهمیدیم که این دو تابع هم مانند __sleep() و __wakeup() مربوط به عملیات Serialization هستند اما تفاوت های آنها در چیست؟
متد __serialize() هنگام serialize شدن یک شئ، اجرا می شود.
متد __unserialize() هنگام unserialize شدن یک شئ اجرا می شود.
متد __sleep() قبل از serialize شدن یک شئ، اجرا می شود.
متد __wakeup() بعد از unserialize شدن یک شئ اجرا می شود.
.
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 →