情况如下 -
我需要在页面之间保留一个对象。在第一页上,我创建了对象,并为其创建了一个表单。在第二页,我坚持对象。然后,用户可以选择返回并编辑他们的选择,或者完成和发布。
在用户完成对象编辑之前,我不希望将更改刷新到数据库。问题是在将对象刷新到数据库之前,该对象不会获得唯一的ID。
有谁知道如何检索持久但未刷新的对象?这甚至可能吗?有更好的方法吗?
答案 0 :(得分:1)
序列化对象,直到完成所有属性。您可以在会话中保存序列化对象以在页面之间保留。当您准备更新或插入时,只需将其反序列化并将其放入数据库。
编辑:示例
// page 1
$object->setProperty($value);
$_SESSION['object'] = serialize($object);
// page 2
$object = unserialize($_SESSION['object']);
// use $object
$_SESSION['object'] = serialize($object);
// page N
$object = unserialize($_SESSION['object']);
$object->insertIntoDB();
编辑2 - 不要忘记在反序列化对象的所有页面中包含类定义,否则它将无效。