如何在Magento中使用Session

时间:2012-07-17 15:03:08

标签: session magento

我观察到Magento中有多个会话类,例如Mage :: getModel('core / session'),Mage :: getModel('customer / session')等等。当我想使用session作为存储时,我应该选择哪个会话类?为什么?我很困惑。

1 个答案:

答案 0 :(得分:12)

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);