gpt4 book ai didi

session - 不同的 Magento session 类型有什么区别

转载 作者:行者123 更新时间:2023-12-03 11:26:46 25 4
gpt4 key购买 nike

我正在寻找一些有关 Magento 中可用的不同 session 类型的差异的信息。

有一个核心 session 、一个客户 session 和一个结帐 session 。但我不太确定何时使用哪一个以及它们的行为方式可能会有所不同。它们是否都在同一时间有效,或者结帐 session 是否比核心 session 更早失效?

最佳答案

好问题!

直接回答这个问题:所有 session 模型的生命周期都是相同的。 session 生命周期由 Magento 和您的服务器软件中的配置决定。 您可能想要问的问题(以 Magento 处理各种 session 的方式)是“给定 session 类型的数据持续了多长时间?”

答案是实现之一,因此最好的方法是在代码中搜索实例化点。要使用的搜索模式是 getSingleton('core/session') (或任何 session 模型)。任何调用它的地方——如果它是第一次遇到它——将在 $_SESSION 中创建 session 命名空间(如下所述)。超全局。

因此, session 永远不会“被杀死”,但数据会根据实现而被清除。臭名昭著的是 checkout/session ,因为在下订单后数据会被删除。

除此之外,您可以依靠该 session 来满足您的持久性需求。

Magento 中的 session 模型使用抽象基类来定义各种 API,Mage_Core_Model_Session_Abstract .此类填充以下角色/功能:

  • 通过 init() 的 session 命名空间方法,从字面上分离 $_SESSION[$namespace] 下每种类型的存储值
  • 用于(连接到) session 相关配置设置(包括 cookie 生命周期、SID、安全设置等)的 getter
  • Flash消息存储和检索(addError()addMessage()addNotice()addSuccess())
  • 用于 session 存储配置和方法的 Getter
  • 通过Varien_Object::__call() 随意设置参数的重载(魔术getter 和setter) . *请注意, session 有一个经过修改的魔术 getter,它允许您从 session 中检索数据并通过一次调用取消设置(例如 $session->getSomeParam(true))

  • 因此,如果您希望您的模块拥有自己的 session 命名空间,只需将 session 模型声明为从 session 摘要和 protected _construct() 中扩展。调用 $this->init('namespace') .

    session 模型的所有数据都将设置在 session 命名空间下的数组键中;对于核心,这将是:
    $session = Mage::getSingleton('core/session')->setSomeValue('Some string');

    可以表示为
    $_SESSION['core']['some_value'] = 'Some string'

    关于session - 不同的 Magento session 类型有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9803979/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com