__serialize နည်းလမ်း
မှော်နည်းလမ်း __serialize ကို object တစ်ခုကို serialize ဖြင့် serialization ပြုလုပ်သည့်အခါ ခေါ်ယူပါသည်။
၎င်းသည် serialization ပြုလုပ်ရန် အချက်အလက်များ array တစ်ခုအနေဖြင့် ပြန်ပေးရပါမည်။
ဤနည်းလမ်းသည် PHP 7.4 တွင် serialization လုပ်ငန်းစဉ်ကို ပိုမိုကျိုးကြောင်းညီညွတ်စွာ ထိန်းချုပ်နိုင်သော __sleep နည်းလမ်း၏ အစားထိုးနည်းလမ်းတစ်ခုအနေဖြင့် ပေါ်ပေါက်လာခဲ့သည်။
ဖွဲ့စည်းပုံ
public function __serialize(): array
ဥပမာ
မည်သည့် object ၏ properties များကို serialization ပြုလုပ်ရမည်ကို သတ်မှတ်ပေးမည့် __serialize နည်းလမ်းပါရှိသော class တစ်ခုကို ဖန်တီးကြပါစို့။
<?php
class User {
public $name;
private $password;
public $email;
public function __construct($name, $password, $email) {
$this->name = $name;
$this->password = $password;
$this->email = $email;
}
public function __serialize(): array {
return [
'name' => $this->name,
'email' => $this->email,
'hash' => md5($this->password)
];
}
}
$user = new User('John', 'secret123', 'john@example.com');
echo serialize($user);
?>
ကုဒ်ဖြင့်လုပ်ဆောင်မှု၏ ရလဒ်။
'O:4:"User":3:{s:4:"name";s:4:"John";s:5:"email";s:15:"john@example.com";s:4:"hash";s:32:"e5e9fa1ba31ecd1ae84f75caaa474f3a";}'
ဥပမာ
__serialize နှင့် __sleep တို့၏ ကွာခြားချက်ကို ပြသကြပါစို့။
<?php
class Product {
public $id;
protected $price;
private $discount;
public function __sleep() {
return ['id', 'price'];
}
public function __serialize(): array {
return [
'id' => $this->id,
'price' => $this->price * (1 - $this->discount)
];
}
}
$product = new Product();
$product->id = 100;
$product->price = 50;
$product->discount = 0.1;
echo "Sleep: " . serialize($product) . "\n";
echo "Serialize: " . serialize($product);
?>
ကုဒ်ဖြင့်လုပ်ဆောင်မှု၏ ရလဒ်။
'Sleep: O:7:"Product":2:{s:2:"id";i:100;s:5:"price";i:50;}'
'Serialize: O:7:"Product":2:{s:2:"id";i:100;s:5:"price";d:45;}'
ဤအကြောင်းကိုလည်း ကြည့်ပါ
-
serializeလုပ်ဆောင်ချက်,
တန်ဖိုးတစ်ခုကို သိမ်းဆည်းထားနိုင်သော string တစ်ခုအဖြစ်သို့ ပြောင်းလဲပေးသည်