なぜ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
.
所属していません magento.stackexchange