Sol*_*per 7 php object-serialization
我正在阅读关于PHP的序列化/反序列化概念.我想知道它们是如何存储在filesystem/db中的.我猜它是二进制格式.但是,我想知道整个班级是如何存储的?我知道数据成员中的数据可以存储,但方法是如何存储的?
我的意思是,PHP如何知道在函数中编写的代码是什么someFunc()?
$obj = new ClassName();
$obj->someFunc();
$serial = serialize($obj);
$unserialobj = unserialize($serial);
$unserialobj->someFunc();
Run Code Online (Sandbox Code Playgroud)
PHP可以知道第2行要做什么,但它知道如何在#5行中做一个非序列化对象?它也保存代码吗?
序列化对象时,PHP仅存储对象的当前状态,即其属性值.它没有序列化它的方法.在反序列化时,需要在内存中加载相应的类.PHP将从序列化字符串中恢复对象的状态,并从同名的类中获取其余信息(结构和方法).
PHP可以知道在第2行做什么,但是如何知道在第5行这是一个未序列化的对象呢?它也保存代码吗?
是的,serialize()将保存有关该对象是其实例的类的信息以及其状态,因此,在反序列化时,您将获得该类的实例,在这种情况下为ClassName。