2015-10-14 72 views
0

酒店

private $_elements 
主义\ COMMON \收藏\ ArrayCollection中的

更名为

private $elements 

,但我有在我的数据库中序列化对象ArrayCollection。所以现在,我的数组集合是空的。 (当我倾倒它,我可以看到$ _elements不是空的)我想知道如何做一个命令来改变它。

我已经尝试:

  • 与MySQL替代功能,但我有一个通知:反序列化()错误
  • 与ReflectionObject,但属性$ _elements没有定义
  • runkit_method_redefine,我不吨有访问

回答

0

如果你的ArrayCollection仅使用标量元素里面那么这个效果很好:

//use following line only if you already have an unserialzed ArrayCollection 
$data = serialize($data); 

$data = unserialize($data); 
$data = var_export($data, true); 
$data = preg_replace('#[A-Za-z\\\]*::__set_state#', '', $data); 
$data = eval('return '.$data.';'); 
$data = new ArrayCollection($data['_elements']); 

如果您在ArrayCollection中存储了一些其他类,它们将转换为普通数组。

警告:请不要在生产中使用此代码,只能恢复您的序列化数据,因为eval是邪恶的,并且是一个潜在的高安全性问题。

相关问题