Magento セッションを使用して顧客セッションをトレースしたいのですが、上記の 3 つのセッション タイプ間のリンクが見つかりませんでした。
これらの 3 つのタイプの主な違いは何ですか?
Magento に 1 つではなく 3 つのセッション タイプがあるのはなぜですか?
そして、それらはどのように結びつけられているのでしょうか?
Magento セッションを使用して顧客セッションをトレースしたいのですが、上記の 3 つのセッション タイプ間のリンクが見つかりませんでした。
これらの 3 つのタイプの主な違いは何ですか?
Magento に 1 つではなく 3 つのセッション タイプがあるのはなぜですか?
そして、それらはどのように結びつけられているのでしょうか?
これは最も基本的なセッションです。訪問者に関する基本的な「匿名」データ (Cookie、IP アドレス、エラー メッセージ) を提供します。
Mage_Core_Model_Session::getCookie()
Mage_Core_Model_Session::addMessage()
Mage_Core_Model_Session::useValidateRemoteAddr()
このオブジェクトは、特定の顧客 (ログインまたはログアウト、名前、ID、電子メール、顧客のグループ) に関連するものを処理します。
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());
等
PS忘れないでくださいadminhtml/session
!
Magento は、グループ化を導入して、対応するものと区別するさまざまな用途のセッション データを管理します。詳細を掘り下げてみましょう。Magento のすべてのセッション データは$_SESSION
、プログラミング ビューの配列であるグローバル変数に格納され、セッション クラスによってカプセル化された配列によって表される各グループで、それらを独立したグループに分類します。
Magento にはデフォルトで、core、customer、および checkout の 3 つのセッション クラスが装備されています。
Mage::getSingelton('core/session')
、
Mage::getSingleton('customer/session')
、
Mage::getSingleton('checkout/session')
は、Magento で使用される 3 つのセッション関数です。
$_SESSION
変数は最終的に次の形式になります。
$_SESSION=array('core'=>array(...), 'customer'=>array(...), 'checkout'=>array(...),...);
変数を直接操作することは避け$_SESSION
、代わりに や のように Magento のやり方で行動する必要が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 の他のセッション クラスと同様に、 を呼び出すことで、このカスタマイズされたセッション クラスを使用できます。
int
特に PHP セッションは、bool
、、 などの基本的なデータ型の値しか保持できないため、string
シリアライズ/デシリアライズは頻繁に行われます。