【发布时间】:2016-01-07 13:11:14
【问题描述】:
我在会话中有一个序列化对象。
当我只想更改这个对象的一个属性时,这真的是唯一的方法吗:
$foo = $session->get('foo');
$foo->setBar('Hello');
$session->set('foo', $foo);
有没有办法直接在会话中修改属性,而无需从会话中获取整个对象?
类似$session->set('foo.bar','Hello');
编辑:我已阅读 http://symfony.com/doc/current/components/http_foundation/sessions.html#attributes,但(据我了解)这仅适用于数组,不适用于对象。在任何情况下,$session->set('foo/bar', 'hello'); 都不起作用:它会在会话中创建一个新条目(与 foo 同级),名为 foo/bar。
【问题讨论】:
-
如果我没记错的话,PHP 5 不会返回一个对象,而是一个引用,所以如果你这样做: $session->get('foo')->setBar('Hello');这将完成工作。我建议尝试一下
-
@AndreaPosadino:是的,谢谢,就是这样! :-)
-
@AndreaPosadino:请将此作为答案发布。为您轻松加分。 ;)