I just learned about the serialize()
andunserialize()
functions. What are some uses for this? I know people serialize things to put into a databas
Serialization is used when you want to pass data outside PHP, for example to Javascript.
Yeah, it often works to send strings, integers and strings as they are, but not more complex structures like arrays. Read more about passing a PHP array to Javascript here.
You can also format your data as JSON that is widely supported in many languages, but then you loose PHP native types and your own classes when converting to it. Read more about JSON and PHP here.
I often see seralized data store in Database, and I really don't like this :
Still, I admit it is an easy way to store not-well-defined data... and I do sometimes use it for that...
Another use for serialization is to facilitate data exchange between two systems : sending objects through some kind of webservice, for instance, requires them to be serialized in some kind of way.
If the two systems are PHP, you could envisage using serialize
/unserialize
. But, here too, what if one of the system is not PHP anymore ? Using JSON or SOAP is probably a better choice : a bit harder at first, but probably a more long-term solution, as those formats are known in other languages too.
One thing I use PHP's serialize
function is to store data in cache (like APC's user's cache), in a PHP application : you cannot store objects as-is : you have to serialize them. As the cache is used only by one application, it is not necessary to use a format known by many languages ; so, serialize is OK... And, to store data in cache, you should use a really fast serialization function -- and serialize is pretty fast ^^
I often use serialize
to store important information in the database that isn't worth creating a whole new field for, but could be of use in the future.
For instance, if the user fills out a form that I only store a few elements from, but I want to keep them all in case I need them later, I'll serialize the array of form elements and store it in the database.
PHP serialize allows you to keep an array or object in a text form. When assigning arrays to things like $_SESSION, it allows PHP to store it in a text file, and then recreate it later. Serialize is used like this for objects and variables. (Just make sure you have declared the class the object uses beforehand)
Wordpress on the other hand uses it for a very similar method, by storing the serialized arrays directly in a database. If you keep a database of keys => values, this could be very beneficial because of the flexibility of arrays, you can store anything in the value parameter.
And heres the link (courtesy of first commentor): http://us3.php.net/serialize