我们可以采用 serialize() 函数将一个对象进行序列化处理。假设我们有一个 User 类,我们可以通过如下代码对其进行序列化处理:
PHP 序列化和反序列化函数实例详解
什么是 PHP 序列化和反序列化
PHP 序列化指将 PHP 对象(数组、类实例等)转化为字符串的过程,进行序列化后我们就可以将其存储或者传输到其他 PHP 程序中进行反序列化。PHP 反序列化则是将序列化后的字符串还原为 PHP 对象。
在序列化与反序列化的过程中,我们可以采用 serialize() 和 unserialize() 函数来实现。
序列化对象
我们可以采用 serialize() 函数将一个对象进行序列化处理。假设我们有一个 User 类,我们可以通过如下代码对其进行序列化处理:
<?php
class User {
public $username;
public $email;
public function __construct($username, $email) {
$this->username = $username;
$this->email = $email;
}
}
$user = new User('test', 'test@example.com');
$serialized = serialize($user);
var_dump($serialized); // 输出: string(87) "O:4:"User":2:{s:8:"username";s:4:"test";s:5:"email";s:15:"test@example.com";}"
?>
可以看到,序列化后的字符串中含有 O:4:“User”:2: 等字符,代表将 User 对象序列化后的类型、属性个数等信息,跟在其后面的 s:8:"username" 则代表对象类中属性 username 的值,以此类推。
反序列化对象
反序列化时可以通过 unserialize() 函数将序列化处理后的字符串进行反序列化。下面以序列化对象为例进行反序列化的示例。
<?php
class User {
public $username;
public $email;
public function __construct($username, $email) {
$this->username = $username;
$this->email = $email;
}
}
$serialized = 'O:4:"User":2:{s:8:"username";s:4:"test";s:5:"email";s:15:"test@example.com";}';
$user = unserialize($serialized);
echo $user->username . ' ' . $user->email;
// 输出: test test@example.com
?>
当我们反序列化时,会得到一个 User 对象,可以直接访问其属性。
序列化数组
同样的,我们也可以对 PHP 数组进行序列化和反序列化。从下面的示例语句中可以看到,使用 serialize() 函数将数组$data存储到文件中,然后使用unserialize()函数将存储在文件中的数据重新读到$temp_data数组中。
<?php
$data = array('foo', 'bar', 'baz');
$file = 'data.txt';
file_put_contents($file, serialize($data));
$temp_data = unserialize(file_get_contents($file));
var_dump($temp_data); // 输出:array(3) { [0]=> string(3) "foo" [1]=> string(3) "bar" [2]=> string(3) "baz" }
?>
总结
本文讲述了 PHP 序列化和反序列化的概念、具体实现方法,通过对用户对象和数组进行序列化和反序列化的介绍,让大家能够了解更多 PHP 序列化和反序列化知识。
本文标题为:PHP 序列化和反序列化函数实例详解
基础教程推荐
- php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia) 2023-04-01
- 如何解决PHP获取不到SESSION信息之一般情况 2023-02-22
- 解决laravel中日志权限莫名变成了root的问题 2023-03-02
- Laravel 中使用简单的方法跟踪用户是否在线(推荐) 2023-03-12
- 微信支付之JSAPI公众号支付详解 2023-01-15
- 在PHP程序中运行Python脚本(接收数据及传参)的方法详解 2023-07-03
- Tp5 无限极分类分享 2023-08-30
- PHP中list()函数用法实例简析 2023-12-19
- php将从数据库中获得的数据转换成json格式并输出的方法 2022-11-12
- Laravel中validation验证 返回中文提示 全局设置的方法 2023-02-20
