我正在阅读 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/