Pregunta

Este es un fragmento de código de 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>

Podemos crear objeto mage_catalog_model_porduct como

$model = Mage::getModel('catalog/product');

La misma manera puede crear el objeto Modelo de recursos de la siguiente manera.

$resourceModel = Mage::getModel('catalog_resource/product');

Sé que básicamente ya hay una función como Mage::getResourceModel();. Ejemplo: Mage::getResourceModel('catalog/product');

Pero esta forma también funciona bien.

¿Alguien puede explicar por qué no usar Mage::getModel() ¿Para obtener el objeto Modelo de recursos? Cualquier sugerencia será apreciada.

¿Fue útil?

Solución

Esta es solo mi opinión, así que siéntase libre de desafiarla, pero me parece que es porque en teoría puede cambiar la clase de modelo de recursos. Por ejemplo, puedo agregar en mi propio módulo esto:

<global>
        <models>
            <catalog>
                <resourceModel>my_resource</resourceModel>
            </catalog>
            <my_resource>
                <class>My_Module_Model_Resource</class>
....

Si tuviera que usar Mage::getModel('catalog_resource/product') Obtendría e instancia de la clase original porque en la configuración dom la declaración todavía existe.
Pero llamando Mage::getResourceModel('catalog/product') Ahora obtengo e instancia de mi nueva clase.
Entonces puedo concluir que la razón por la que es 'extensibilidad'.
Otra razón podría ser mantener una consistencia.
Si llamas Mage::getModel($someParam) Obtendrá el modelo de recursos correspondiente utilizando el mismo parámetro: $someParam.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top