⭕️ کانال توسعهدهندگان پیاچپی (PHP) دولوپیکس
💠 دولوپیکس | جامعه توسعهدهندگان ایرانی
💎 @Developix
🚀 Developix.ir
📌 پشتیبانی و تبلیغات:
@DevelopixSupport
Post #34
758
مجیک متدهای
مجیک متد
وقتی یک شیء در PHP سریالیزه میشود (برای ذخیره شدن آن در فایل یا ارسال آن از طریق شبکه)، مجیک متد
مثال:
در این مثال، ما یک کلاس به نام MyClass داریم که سه ویژگی name، age و city را دارد. ما یک مجیک متد
سپس، ما مجیک متد
در نهایت، ما یک شیء از این کلاس ایجاد میکنیم و آن را سریالیزه میکنیم.
وقتی این برنامه اجرا میشود، فقط ویژگیهای name و age از شیء $obj در زمان سریالیزه شدن ذخیره میشوند.
———
مجیک متد
وقتی یک شیء سریالیزه شده را میخوانید و به شیء تبدیل میکنید، مجیک متد
مثال:
در این مثال، ما از همان کلاس MyClass استفاده میکنیم. اما در اینجا ما مجیک متد
سپس، ما یک رشته حاوی داده سریالیزه شده را به کلاس MyClass منتقل میکنیم و آن را با استفاده از تابع unserialize دسریالیزه میکنیم.
وقتی این برنامه اجرا میشود، وقتی که $obj دسریالیزه میشود، مجیک متد
به طور خلاصه، مجیک متدهای
👤 AmirHossein
💎 Channel: @DevelopixPHP
__sleep و __wakeup در PHP به شما امکان میدهند کنترلی بر فرآیند سریالیزه کردن و دسریالیزه کردن یک شیء را داشته باشید. مجیک متد
__sleep :وقتی یک شیء در PHP سریالیزه میشود (برای ذخیره شدن آن در فایل یا ارسال آن از طریق شبکه)، مجیک متد
__sleep فراخوانی میشود. این مجیک متد امکان میدهد تا شما مشخص کنید که کدام ویژگیهای شیء باید قبل از سریالیزه شدن ذخیره شوند.مثال:
class MyClass {
public $name;
public $age;
public $city;
public function __construct($name, $age, $city) {
$this->name = $name;
$this->age = $age;
$this->city = $city;
}
public function __sleep() {
return array('name', 'age');
}
}
$obj = new MyClass('John', 30, 'New York');
$data = serialize($obj);
echo $data;
// Output: O:7:"MyClass":2:{s:4:"name";s:4:"John";s:3:"age";i:30;}در این مثال، ما یک کلاس به نام MyClass داریم که سه ویژگی name، age و city را دارد. ما یک مجیک متد
__construct داریم که مقادیر این ویژگیها را تنظیم میکند.سپس، ما مجیک متد
__sleep را به کلاس اضافه میکنیم. این مجیک متد در زمانی که یک شیء از این کلاس سریالیزه میشود، فراخوانی میشود و آرایهای از نامهای ویژگیها را که قبل از سریالیزه شدن باید ذخیره شوند، برمیگرداند.در نهایت، ما یک شیء از این کلاس ایجاد میکنیم و آن را سریالیزه میکنیم.
وقتی این برنامه اجرا میشود، فقط ویژگیهای name و age از شیء $obj در زمان سریالیزه شدن ذخیره میشوند.
———
مجیک متد
__wakeup:وقتی یک شیء سریالیزه شده را میخوانید و به شیء تبدیل میکنید، مجیک متد
__wakeup فراخوانی میشود. این مجیک متد به شما اجازه میدهد که فرآیند بازیابی دادهها پس از دسریالیزه کردن را کنترل کنید.مثال:
class MyClass {
public $name;
public $age;
public $city;
public function __construct($name, $age, $city) {
$this->name = $name;
$this->age = $age;
$this->city = $city;
}
public function __sleep() {
return array('name', 'age');
}
public function __wakeup() {
$this->city = 'Unknown';
}
}
$data = 'O:7:"MyClass":2:{s:4:"name";s:4:"John";s:3:"age";i:30;}';
$obj = unserialize($data);
var_dump($obj);
/*
Output:
object(MyClass)#1 (3) {
["name"]=>
string(4) "John"
["age"]=>
int(30)
["city"]=>
string(7) "Unknown"
}
*/در این مثال، ما از همان کلاس MyClass استفاده میکنیم. اما در اینجا ما مجیک متد
__wakeup را به کلاس اضافه میکنیم. این مجیک متد هنگامی که یک شیء از این کلاس دسریالیزه میشود، فراخوانی میشود و این امکان را به ما میدهد که دادههایی را پس از دسریالیزه کردن تغییر دهیم.سپس، ما یک رشته حاوی داده سریالیزه شده را به کلاس MyClass منتقل میکنیم و آن را با استفاده از تابع unserialize دسریالیزه میکنیم.
وقتی این برنامه اجرا میشود، وقتی که $obj دسریالیزه میشود، مجیک متد
__wakeup فراخوانی میشود و مقدار city به "Unknown" تنظیم میشود.به طور خلاصه، مجیک متدهای
__sleep و __wakeup در PHP ابزارهایی هستند که به شما امکان میدهند کنترلی دقیق بر فرآیند سریالیزه کردن و دسریالیزه کردن یک شیء داشته باشید.👤 AmirHossein
💎 Channel: @DevelopixPHP
- 👍 7
- 🔥 3


