Какая разница между основным/сеансом, клиентом/сеансом и проверкой/сеансом в Magento? - программирование
Подтвердить что ты не робот

Какая разница между основным/сеансом, клиентом/сеансом и проверкой/сеансом в Magento?

Я хочу использовать сеанс magento для отслеживания сеанса клиента, но не смог найти ссылку между тремя типами сеансов.

В чем основные отличия этих трех типов?

Почему Magento имеет 3 типа сеанса вместо одного?

И как они связаны друг с другом?

4b9b3361

Ответ 1

Основной /Session

Это самый голый сеанс костей. Он дает основные "анонимные" данные о посетителе (файлы cookie, IP-адрес, сообщения об ошибках).

Mage_Core_Model_Session::getCookie()
Mage_Core_Model_Session::addMessage()
Mage_Core_Model_Session::useValidateRemoteAddr()

Клиент /Session

Этот объект обрабатывает вещи, относящиеся к конкретному клиенту (вход в систему или выход, имя, идентификатор, электронная почта, группа клиентов)

Mage_Customer_Model_Session::getCustomerId()
Mage_Customer_Model_Session::isLoggedIn()
Mage_Customer_Model_Session::getCustomerGroupId()

Checkout/Session

Здесь хранится информация, связанная с цитатой, гостем или нет (итоговые значения корзины, элементы, ход проверки)

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!

Ответ 2

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 и т.д., поэтому сериализация/десериализация часто затрагиваются.