Почему Mage :: getModel () не используется для классов модели ресурсов?

magento.stackexchange https://magento.stackexchange.com/questions/8772

  •  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') Я бы получил и экземпляр исходного класса, потому что в конфигурации декларация все еще существует.
но позвонив Mage::getResourceModel('catalog/product') Теперь я получаю и экземпляр моего нового класса.
Так что я могу сделать вывод, что причина, по которой он «расширяется».
Другая причина может состоять в том, чтобы сохранить последовательность.
Если вы позвоните Mage::getModel($someParam) Вы получите соответствующую модель ресурса, используя тот же параметр: $someParam.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top