PHP中的串行化
在PHP中,会话(session)将自动地通过串行化保存和恢复对象。
在需要的时候,我们也可以手动serialize()和unserialize()函数手动对某个对象进行串行化,格式如下:
$ecoded = serialize(something);
$something = unserialize(encoded);
PHP中存在两个串行化钩子:
__sleep():用于在一个对象被串行化之前被调用,它能执行一些必要的清理工作,以保存对象的状态,例如:关闭数据库连接、写出没被
保存的持久性数据等等。它返回一个数组,其中包含那些需要写入字节流的数据成员的名称。如果返回了一个空数组,则不写任何数据。
__walkup():相反,在一个对象从字节流中被创建时被立即调用__walkup方法,这个方法将执行一些必需的动作。例如:重新连接数据库或
其它的初始化工作。
如果类中未定义这两个钩子方法,对象仍可以被串行化,但它们不会被告知串行化的过程。