什么';在Magento中,core/session、customer/session和checkout/session之间的区别是什么?

什么';在Magento中,core/session、customer/session和checkout/session之间的区别是什么?,magento,Magento,我想使用magento会话跟踪客户会话,但找不到上述3种会话类型之间的链接 这三种类型的主要区别是什么 为什么Magento有3种会话类型而不是一种 它们是如何联系在一起的?Core/Session 这是最简单的课程。它提供关于访问者的基本“匿名”数据(cookies、IP地址、错误消息) 客户/会议 此对象处理与特定客户相关的事情(登录或注销、姓名、id、电子邮件、客户的组) 签出/会话 它存储与报价相关的信息,无论是否为客人(购物车总计、项目、结账进度) 每个会话模型都是从Mage\u C

我想使用magento会话跟踪客户会话,但找不到上述3种会话类型之间的链接

这三种类型的主要区别是什么

为什么Magento有3种会话类型而不是一种

它们是如何联系在一起的?

Core/Session 这是最简单的课程。它提供关于访问者的基本“匿名”数据(cookies、IP地址、错误消息)

客户/会议 此对象处理与特定客户相关的事情(登录或注销、姓名、id、电子邮件、客户的组)

签出/会话 它存储与报价相关的信息,无论是否为客人(购物车总计、项目、结账进度)


每个会话模型都是从
Mage\u Core\u Model\u session\u Abstract
扩展而来,它们只是提供了不同的功能。
core/session
确实没有太多内容。它的大部分功能都是从它们共享的父类继承的

您可以将
customer/session
checkout/session
及其各种方法关联起来

e、 g


注意:不要忘记
adminhtml/session

Magento引入分组来管理会话数据,使其不同于对应的会话数据。让我们深入了解细节。Magento中的所有会话数据都存储在全局变量
$\u session
(编程视图中的一个数组)中,并将它们分类为独立的组,每个组由会话类封装的数组表示

默认情况下,Magento为core、customer和checkout配备了三个会话类

Mage::getSingelton('core/session')
Mage::getSingleton('customer/session')
Mage::getSingleton('checkout/session')
使用了三个会话函数 在马根托。
$\u SESSION
变量最终具有以下形式:

$_SESSION=array('core'=>array(...), 'customer'=>array(...), 'checkout'=>array(...),...);
我们应该避免直接操作
$\u SESSION
变量,而是以Magento的方式操作,比如
Mage::getSingleton('core/SESSION')-getXXX()
Mage::getSingleton('core/SESSION')->setXXX()

如果需要自定义会话类,则需要继承
Mage\u Core\u Model\u session\u Abstract
。以下是一个例子:

class Company_Module_Model_Session extends Mage_Core_Model_Session_Abstract
{
    public function __construct() {
        $this->init('module');
    }
}
然后我们可以通过调用
Mage::getSingleton('mgwishlist/session')
来使用这个定制的会话类,就像Magento中的任何其他会话类一样


特别是,PHP会话只能保留基本数据类型的值,例如
int
bool
string
等,因此经常涉及序列化/反序列化

$\u SESSION
变量可以处理除类型之外的所有数据类型(包括对象)。请清楚地理解。感谢uSo在结帐时访问帐单表单电子邮件地址不会像这样工作`$customer=Mage::getSingleton('customer/session')->getCustomer()$customerEmail=$customer->getEmail();`因为必须使用签出会话?
Mage_Checkout_Model_Session::getQuote()
Mage_Checkout_Model_Session::setStepData()
Mage_Checkout_Model_Session::getQuote()->getTotals()
Mage::getSingleton('checkout/session')
    ->setCustomer(Mage::getSingleton('customer/session')->getCustomer());
$_SESSION=array('core'=>array(...), 'customer'=>array(...), 'checkout'=>array(...),...);
class Company_Module_Model_Session extends Mage_Core_Model_Session_Abstract
{
    public function __construct() {
        $this->init('module');
    }
}