以前用PHP做数据缓存的时候一直是将数据序列化(serialize)后存入文件,取出时再反序列化(unserialize),这样做除了效率低点没有其他问题。读取文件再解析,当然不如直接include来的快,这时候就要求缓存是以PHP代码的形式存储的,这里可以用到PHP的 var_export 函数,其返回的代码可以直接存储。这个方法貌似不错,但问题也来了:

Fatal errorCall to undefined method stdClass::__set_state() in xxx

__set_state()是PHP 5.1引入的一个魔术函数,接受一个数组作为参数,主要用在var_export的时候进行递归处理。可是使用的前提是得先定义啊~ 我习惯的数据存储方式都是用的stdClass,ezSQL默认从数据库取出来的数据结构也是以stdClass形式进行存储的……这下麻烦大了,stdClass本身是不存在__set_state()这个静态方法的……没辙了……只好改为数组……唉……

今天的牢骚没有结论,导出对象有除了序列化有没有更理想的方法呢?还是我真的就只能做数组的缓存了?

ps:有人已经向PHP提出申请了,哈哈~
http://aspn.activestate.com/ASPN/Mail/Message/php-dev/3713102