5

Magentoには複数のセッションクラスがあります。たとえば、Mage :: getModel('core / session')、Mage :: getModel('customer / session')などです。セッションをストレージとして使用する場合、どのセッションクラスを選択する必要がありますか?なぜ?私はただ混乱しています。

4

1 に答える 1

12

Magento のコードはモジュールに編成されています。モジュールの目的の 1 つは、名前空間を提供することです。つまり、モジュールを使用すると、ある開発者グループは、別の開発者グループが変数やオブジェクトなどを誤って踏んでしまうことを恐れずにコードを書くことができます。

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);
于 2012-07-17T16:31:45.410 に答える