【问题标题】:How to use Session in Magento如何在 Magento 中使用 Session
【发布时间】:2012-07-16 13:05:02
【问题描述】:

我观察到 Magento 中有不止一个 session 类,例如 Mage::getModel('core/session')、Mage::getModel('customer/session') 等等。当我想将 session 用作存储时,我应该选择哪个 session 类?为什么?我只是一头雾水。

【问题讨论】:

  • “作为存储”是什么意思?你会存储什么?
  • 我的意思是我们可以保存和检索数据的地方。在开发中,尤其是在用户会话中,通常会将一些数据保存到会话中并在未来的交互中检索它,例如没有用户登录的愿望清单项目。

标签: session magento


【解决方案1】:

Magento 的代码被组织成模块。模块的目的之一是提供命名空间。也就是说,模块允许一组开发人员编写代码,而不必担心他们的变量、对象等会被另一组开发人员意外踩到。

Magento 中的每个模块都可以拥有自己的会话对象。通过为每个模块提供它自己的会话对象 Magento 帮助开发人员避免 PHP 全局会话变量中的名称冲突。比如下面的代码

Mage::getModel('core/session')->setData('foo',$someValue);
Mage::getModel('customer/session')->setData('foo',$someOtherValue);

会将这两个值保存到会话中,即使它们具有相同的密钥。

至于您应该选择哪个会话类——如果您正在编写自己的模块,您应该创建自己的会话类/模型,从而避免上述冲突。

但实际上,只要您以某种方式命名变量,将内容保存在核心/会话上应该不是问题。

Mage::getModel('core/session')->setData('my_namespace_foo',$someValue);

【讨论】:

  • 谢谢!话又说回来,不同类型的会话类的实例是否共享生命周期?我们可以为每个实例指定一个值吗?
  • 我不确定,你需要看看实现。
猜你喜欢
  • 2012-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-11
  • 2016-06-24
  • 1970-01-01
相关资源
最近更新 更多