Question

Ceci est un extrait de code 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>

Nous pouvons créer un objet Mage_Catalog_Model_Porduct comme

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

Même manière peut créer l'objet modèle de ressources comme suit.

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

Je sais que fondamentalement il y a déjà une fonction Mage::getResourceModel();. Exemple: Mage::getResourceModel('catalog/product');

Mais cette façon est fonctionne aussi très bien.

Quelqu'un peut-il expliquer pourquoi ne pas utiliser Mage::getModel() pour obtenir l'objet modèle de ressources? Toutes les suggestions seront appréciées.

Était-ce utile?

La solution

Ceci est juste mon avis alors ne hésitez pas à challange, mais je chose qu'il est parce que, en théorie, vous pouvez changer la classe de modèle de ressources. Par exemple, je peux ajouter dans mon propre module ceci:

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

Si je devais utiliser Mage::getModel('catalog_resource/product') je recevrais et instance de la classe d'origine, car dans les DOM de configuration de la déclaration existe toujours.
mais en appelant Mage::getResourceModel('catalog/product') maintenant je reçois et par exemple de ma nouvelle classe.
Je peux donc conclure que la raison pour laquelle il Extensibility ".
Une autre raison pourrait être de garder une cohérence.
Si vous appelez Mage::getModel($someParam) vous obtiendrez le modèle de ressource correspondant en utilisant le même paramètre. $someParam

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top