php - 对象序列化/反序列化如何工作?

标签 php object-serialization

我正在阅读 PHP 的序列化/反序列化概念。我想知道它们是如何存储在文件系统/db 中的。我猜它是二进制格式。但是,我想知道整个类(class)是如何存储的?我知道可以存储数据成员中的数据,但是如何存储方法?

我的意思是,PHP 如何知道 someFunc() 函数中写入了哪些代码?

$obj = new ClassName();
$obj->someFunc();
$serial = serialize($obj);
$unserialobj = unserialize($serial);
$unserialobj->someFunc();

PHP 可以知道在第 2 行做什么,但它如何知道在第 5 行(一个未序列化的对象)做什么?它也保存代码吗?

最佳答案

当序列化一个对象时,PHP 只存储对象的当前状态,即它的属性值。它不序列化它的方法。反序列化时需要将对应的类加载到内存中。 PHP 将从序列化字符串中恢复对象的状态,并从同名类中获取其余信息(结构和方法)。

关于php - 对象序列化/反序列化如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7873395/

相关文章:

php - 学说多对多关联 prePersist 数据复制

php - 如果使用 PHP 找不到,则使用默认值进行正则表达式分组

c# - 如何在 C# 中模拟 java 上的对象序列化

Java对象序列化-如何添加成员变量?

python - pickle 和搁置有什么区别?

PHP变量到JQuery函数?

php - 在数据表插件上的 mysql WHERE 子句上使用 GET 方法不起作用

php - 使用表单内的按钮删除表行的最佳方法

Delphi客户端服务器数组发送

javascript - 如何在 Pug 中获取对象的值?