php能實現序列化。在php中,可以利用serialize()函數實現序列化,將值轉換為一個可以儲存的字串,語法「serialize(要序列化的變數)」;還可使用unserialize()函數實現反序列化,重新把字串變回PHP原來的值。
本教學操作環境:windows7系統、PHP7.1版、DELL G3電腦
所謂序列化,就是將一個在記憶體中的變數轉換為可保存或傳輸的字串的過程。而反序列化就是在適當的時候把這個字串再轉換成原來的變數使用。這兩個過程結合起來可以輕鬆的完成資料的儲存和傳輸操作,使得程式更具維護性。
php也能實現序列化。
在php中,可以利用serialize() 函數實作序列化,將值轉換成一個可以儲存的字串;還可使用unserialize() 函數能夠重新把字串變回PHP 原來的值,也就是反序列化。
serialize() 函數的語法格式如下:
serialize(mixed $value)
其中 $value 就是要序列化的變數。
serialize() 函數可以處理除了 resource(資源)之外的任何類型。當序列化物件時,PHP 會在序列動作之前呼叫該物件的 __sleep() 成員函數。這樣就允許物件在被序列化之前做任何清除操作。類似的,當使用 unserialize() 反序列化物件時,將呼叫 __wakeup() 成員函數。
【範例】使用 serialize() 函數序列化一個物件。
<?php header('content-type:text/html;charset=utf-8'); class WebSit{ public $name; public $url; function __construct($name, $url){ $this->name = $name; $this->url = $url; } } $websit = new WebSit('php中文网', 'https://www.php.cn/'); $ser_str = serialize($websit); echo $ser_str; ?>
擴展知識:反序列化
當使用serialize() 函數將物件序列化後,可以將此得到的字串儲存到檔案或資料庫中,然後在需要的地方使用unserialize() 函數將這個字串反序列化,unserialize() 函數的語法格式如下:
unserialize(string $str)
其中,$ str 為使用serialize() 函數序列化後的字串。如果傳入的字串無法被反序列化,則會傳回 FALSE,並產生一個 E_NOTICE。
【範例】反序列化上面得到的字串。
<?php header('content-type:text/html;charset=utf-8'); class WebSit{ public $name; public $url; function __construct($name, $url){ $this->name = $name; $this->url = $url; } } $str = 'O:6:"WebSit":2:{s:4:"name";s:12:"php中文网";s:3:"url";s:19:"https://www.php.cn/";}'; $websit = unserialize($str); var_dump($websit); ?>
推薦學習:《PHP影片教學》
以上是php不能序列化嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!