【问题标题】:Symfony2: Change property of object in the sessionSymfony2:更改会话中对象的属性
【发布时间】: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:请将此作为答案发布。为您轻松加分。 ;)

标签: php symfony session


【解决方案1】:

就像我在评论中所说,您可以使用此解决方案:

$session->get('foo')->setBar('Hello');

我希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多