Domanda

Questo è un frammento di codice da 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>

può creare l'oggetto Mage_Catalog_Model_Porduct come

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

Allo stesso modo si può creare l'oggetto modello di risorse come segue.

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

So che in fondo c'è già una funzione come Mage::getResourceModel();. Esempio: Mage::getResourceModel('catalog/product');

Ma in questo modo si funziona anche bene.

Qualcuno può spiegare perché non usare Mage::getModel() per ottenere l'oggetto modello di risorse? saranno apprezzati Eventuali suggerimenti.

È stato utile?

Soluzione

Questa è solo la mia opinione quindi sentitevi liberi di sfidare, ma io cosa è perché, in teoria, è possibile modificare la classe del modello di risorsa. Per esempio posso aggiungere nel mio modulo di questo:

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

Se dovessi usare Mage::getModel('catalog_resource/product') vorrei avere e un'istanza della classe originale, perché nel DOM config dichiarazione esiste ancora.
ma chiamando Mage::getResourceModel('catalog/product') ora ho e l'istanza della mia nuova classe.
Quindi posso concludere che la ragione per cui 'estensibilità'.
Un altro motivo potrebbe essere quello di mantenere una consistenza.
Se si chiama Mage::getModel($someParam) otterrete il modello di risorse corrispondente utilizzando lo stesso parametro:. $someParam

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top