phpobject-serialization

How does object serialize/unserialize work?


I was reading about serialize/unserialize concepts of PHP. I was wondering how they are stored in the filesystem/db. I guess it is in the binary format. However, I wonder how entire class is stored? I understood that data in the data member can be stored but how are the methods stored?

I mean, how does PHP know what code is written inside the function of say, someFunc()?

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

PHP can know what to do at line #2, but how it know what to do at line #5 which is an unserialized object? Does it save the code as well?


Solution

  • PHP can know what to do at line#2 but how it knows what to do at line#5 which is a unserialized object? does it save the code as well?

    Yes, serialize() will save the information about the class which this object is an instance of, along with its state, so when you unserialize, you get an instance of that class, which in this case is ClassName.