บทนำ
Interface Serializable มีอยู่ใน PHP library เพื่อสร้างคลาสที่ให้การ serialize แบบกำหนดเอง ฟังก์ชัน serialize() ของ PHP สามารถ serialize ค่าส่วนใหญ่ให้เป็น representation ที่เก็บได้ แต่ object ของ user-defined classes ไม่สามารถ serialize ได้ Interface นี้ทำให้เป็นไปได้
ไวยากรณ์
Serializable { abstract public serialize ( void ) : string abstract public unserialize ( string $serialized ) : void }เมธอด
Serializable::serialize - String representation ของ object
Serializable::unserialize - สร้าง object จาก serialized string representation
Built-in serialize() function สร้าง representation ที่เก็บได้ของค่า
serialize ( mixed $value ) : string
unserialize() function สร้างค่า PHP จาก stored representation
unserialize ( string $str [, array $options ] ) : mixed
Serializable Example
ในตัวอย่างต่อไปนี้ ตัวแปรสตริงถูกใช้เป็น private property ของ myclass เมื่อ built-in serialize() function ใช้ object ของคลาสนี้เป็น argument เมธอด serialize() จะถูกเรียกอัตโนมัติ เช่นเดียวกัน unserialize() function จะสร้าง object ใหม่ด้วย string private property
ตัวอย่าง
<?php class myclass implements Serializable { private $arr; public function __construct() { $this->arr = "TutorialsPoint India (p) Ltd"; } public function serialize() { echo "Serializing object..\n"; return serialize($this->arr); } public function unserialize($data) { echo "Unserializing object..\n"; $this->arr = unserialize($data); } public function getdata() { return $this->arr; } } $obj = new myclass; $serobj = serialize($obj); var_dump ($serobj); $obj1 = unserialize($serobj); var_dump($obj1->getdata()); ?>ผลลัพธ์
โปรแกรมข้างต้นแสดงผลลัพธ์ดังนี้
Serializing object.. string(55) "C:7:\"myclass\":36:{s:28:\"TutorialsPoint India (p) Ltd\";}" Unserializing object.. string(28) "TutorialsPoint India (p) Ltd"