为什么Mage :: getModel()不用于资源模型类?
-
16-10-2019 - |
题
这是来自 app/code/core/Mage/Catalog/etc/config.xml
.
<config>
..............
<global>
<models>
<catalog>
<class>Mage_Catalog_Model</class>
<resourceModel>catalog_resource</resourceModel>
</catalog>
<catalog_resource>
<class>Mage_Catalog_Model_Resource</class>
<deprecatedNode>catalog_resource_eav_mysql4</deprecatedNode>
<entities>
<product>
<table>catalog_product_entity</table>
</product>
................
</config>
我们可以创建mage_catalog_model_porduct对象为
$model = Mage::getModel('catalog/product');
相同的方式可以如下创建资源模型对象。
$resourceModel = Mage::getModel('catalog_resource/product');
我知道基本上已经有一个功能 Mage::getResourceModel();
。例子: Mage::getResourceModel('catalog/product');
但是这种方式也可以正常工作。
谁能解释为什么不使用 Mage::getModel()
获取资源模型对象?任何建议将不胜感激。
解决方案
这只是我的看法,所以请随意挑战它,但是我的意思是,从理论上讲,您可以更改资源模型类。例如,我可以在自己的模块中添加:
<global>
<models>
<catalog>
<resourceModel>my_resource</resourceModel>
</catalog>
<my_resource>
<class>My_Module_Model_Resource</class>
....
如果我要使用 Mage::getModel('catalog_resource/product')
我会得到原始类的实例,因为在config dom中,声明仍然存在。
但是通过打电话 Mage::getResourceModel('catalog/product')
现在我得到了新课的实例。
因此,我可以得出结论,其原因“可扩展性”。
另一个原因可能是保持一致性。
如果您打电话 Mage::getModel($someParam)
您将使用相同的参数获得相应的资源模型: $someParam
.