Computer >> Máy Tính >  >> Lập trình >> PHP

Giao diện PHP Serializable

Giới thiệu

Có thể nối tiếp giao diện hiện diện trong thư viện PHP để xây dựng một lớp cung cấp tuần tự hóa được kích thích. serialize () của PHP hàm có thể tuần tự hóa hầu hết các giá trị thành một biểu diễn lưu trữ. Tuy nhiên, các đối tượng của các lớp do người dùng định nghĩa không thể được tuần tự hóa. Giao diện này làm cho nó trở nên khả thi.

Cú pháp

Phương thức
Serializable {
   /* Methods */
   abstract public serialize ( void ) : string
   abstract public unserialize ( string $serialized ) : void
}

Phương pháp

Serializable ::serialize - Biểu diễn chuỗi của đối tượng

Serializable ::unserialize - Xây dựng đối tượng từ biểu diễn chuỗi được tuần tự hóa

Tích hợp serialze () hàm Tạo một biểu diễn lưu trữ của một giá trị

serialize ( mixed $value ) : string

unserialize () function Tạo một giá trị PHP từ một biểu diễn được lưu trữ

unserialize ( string $str [, array $options ] ) : mixed

Ví dụ có thể sắp xếp theo thứ tự

Trong ví dụ sau, một biến chuỗi được sử dụng private proprty của myclass. Khi hàm serialize () tích hợp sẵn sử dụng đối tượng của lớp này làm đối số, phương thức serialize () sẽ tự động được gọi. Tương tự, hàm unserialize () cấu trúc lại đối tượng bằng thuộc tính string prvate.

Ví dụ

<?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());
?>

Đầu ra

Chương trình trên hiển thị kết quả sau

Serializing object..
string(55) "C:7:"myclass":36:{s:28:"TutorialsPoint India (p) Ltd";}"
Unserializing object..
string(28) "TutorialsPoint India (p) Ltd"