【问题标题】:ZF2 and ZF1 parallel session compatibilityZF2 和 ZF1 并行会话兼容性
【发布时间】:2014-02-26 10:27:52
【问题描述】:

出于迁移目的,我在一个项目中使用 ZF1 和 ZF2 模块。当然 ZF1 模块应该使用 Bit_Session_Namespace 而 ZF2 模块应该使用 Zend\Session\Container。但是,我很难使用这两个不同的组件处理相同的会话数据。

作为stated in the docs,我在使用 ZF1 模块时初始化 ZF2。这工作正常。我使用 ZF1 模块登录应用程序,ZF1 和 ZF2 模块都可以访问会话数据。

我已经迁移了用户模块,它允许我通过 ZF2 模块登录。突然间,会话数据(存储在数据库中)被存储为 ArrayObjects 而不是普通的 Arrays。现在仍然可以使用 Bit_Session_Namespace 读取会话数据,但是,操作会话值完全没有效果。

我的问题:无论是哪个组件初始化了会话,我都需要做什么才能从 ZF1 和 ZF2 组件完全访问会话? ZF2 会话是否需要进行不同的配置?在 ZF2 模块中工作时是否必须初始化 ZF1?感谢您的任何建议,我真的被卡住了!如果您需要任何代码 sn-ps,只需发表评论即可。

【问题讨论】:

    标签: zend-framework zend-framework2 zend-session


    【解决方案1】:

    突然间,会话数据(存储在数据库中)被存储为 ArrayObjects 而不是普通的 Arrays。

    在 ZF2 中存储会话有另一种策略,SessionArrayStorage。当使用直接访问会话的 3rd 方库时,建议这样做。在您的情况下,ZF1 是第 3 方库。

    【讨论】:

    • 感谢您的回答,对我迟到的回复感到抱歉!不幸的是,这无济于事,问题仍然存在。此外,SessionArrayStorage 继承 AbstractSessionArrayStorage 并且类注释说:“用允许属性访问、元数据存储、锁定和不变性的 ArrayObject 替换 $_SESSION 超全局变量。”这正是我不想要的,因为 Bit_Session_Namespace 不能与 ArrayObject 一起使用。我可能要写一个自定义存储...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    相关资源
    最近更新 更多