Я хочу использовать сеанс magento для отслеживания сеанса клиента, но не смог найти ссылку между тремя типами сеансов.
В чем основные отличия этих трех типов?
Почему Magento имеет 3 типа сеанса вместо одного?
И как они связаны друг с другом?
Я хочу использовать сеанс magento для отслеживания сеанса клиента, но не смог найти ссылку между тремя типами сеансов.
В чем основные отличия этих трех типов?
Почему Magento имеет 3 типа сеанса вместо одного?
И как они связаны друг с другом?
Это самый голый сеанс костей. Он дает основные "анонимные" данные о посетителе (файлы cookie, IP-адрес, сообщения об ошибках).
Mage_Core_Model_Session::getCookie()
Mage_Core_Model_Session::addMessage()
Mage_Core_Model_Session::useValidateRemoteAddr()
Этот объект обрабатывает вещи, относящиеся к конкретному клиенту (вход в систему или выход, имя, идентификатор, электронная почта, группа клиентов)
Mage_Customer_Model_Session::getCustomerId()
Mage_Customer_Model_Session::isLoggedIn()
Mage_Customer_Model_Session::getCustomerGroupId()
Здесь хранится информация, связанная с цитатой, гостем или нет (итоговые значения корзины, элементы, ход проверки)
Mage_Checkout_Model_Session::getQuote()
Mage_Checkout_Model_Session::setStepData()
Mage_Checkout_Model_Session::getQuote()->getTotals()
Каждая из моделей сеансов расширена с Mage_Core_Model_Session_Abstract
, они просто предлагают разные функции. Для core/session
действительно не так много. Большая часть его функций наследуется от родительского класса, который все они разделяют.
Вы можете связать customer/session
с checkout/session
различными способами.
например.
Mage::getSingleton('checkout/session')
->setCustomer(Mage::getSingleton('customer/session')->getCustomer());
и т.д.
P.S. Не забывайте о adminhtml/session
!
Magento вводит группировку для управления данными сеанса для различного использования, которая отличает его от своих коллег. Позволяет вникать в детали. Все данные сеанса в Magento хранятся в глобальной переменной $_SESSION
, массиве из представления программирования и классифицируют их в независимые группы с каждой группой, представленной массивом, инкапсулированным классом сеанса.
Magento по умолчанию оснащен тремя классами сеанса для ядра, клиента и проверки.
Mage::getSingelton('core/session')
Mage::getSingleton('customer/session')
Mage::getSingleton('checkout/session')
используются три функции сеанса
в Мадженто.
$_SESSION
variable имеет следующий вид:
$_SESSION=array('core'=>array(...), 'customer'=>array(...), 'checkout'=>array(...),...);
нам следует избегать непосредственного использования переменной $_SESSION
, а вместо этого действовать по способу Magentos, например Mage::getSingleton('core/session')-getXXX()
и Mage::getSingleton('core/session')->setXXX()
.
Если требуется настраиваемый класс сеанса, требуется наследовать Mage_Core_Model_Session_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
и т.д., поэтому сериализация/десериализация часто затрагиваются.