有人可以在Magento解释单身人士吗?

时间:2012-06-27 16:13:11

标签: magento singleton

我已经在这里阅读了大量的线程和谷歌,由于某种原因,我仍然不明白单身人士与Magento有什么关系。例如,我创建了一个侦听订单保存事件的观察者并执行一些自定义逻辑。根据我在另一个帖子中收到的建议,我将我的班级作为单身人士。我怎么知道这是对的?它可能不是单身人士吗?

 <frontend>
    <events>
        <checkout_type_onepage_save_order_after>
            <observers>
                <reducesetinventory_save_order_observer>
                    <class>MyModule_ReduceSetInventory_Model_Observer</class>
                    <method>checkout_type_onepage_save_order_after</method>
                    <type>singleton</type>
                </reducesetinventory_save_order_observer>
            </observers>
        </checkout_type_onepage_save_order_after>
    </events>
</frontend>
<global>
    <models>
        <myname_reducesetinventory>
            <class>MyName_ReduceSetInventory_Model_Observer</class>
        </myname_reducesetinventory>
    </models>
</global>

2 个答案:

答案 0 :(得分:4)

如果模型已经实例化,则singleton将返回实例,否则将创建一个新实例。非常方便,因为在某些情况下,您不想创建另一个要创建的实例(例如配置,订单,报价等)。

答案 1 :(得分:2)

来自http://codemagento.com/2011/04/observers-and-dispatching-events/

  

<type> - 我一直使用单身,但其他选项也可以   “模型”或“对象”。 “singleton”将创建对象as   Mage :: getSingleton()虽然“对象”和“模型”都将使用   创建观察者对象时的Mage :: getModel()。

因此,如果在脚本执行期间多次调用您的观察者,则在单例的情况下,您可以在第一个观察者调用中将某些数据保存(“缓存”)在私有/受保护变量中,并在下次调用时使用它。例如,您可以缓存某些大查询,外部Web服务调用响应等的结果。