Frage

Dies ist ein Code -Ausschnitt von 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>

Wir können das Objekt mage_catalog_model_porduct als erstellen

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

Gleiches kann das Ressourcenmodellobjekt wie folgt erstellen.

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

Ich weiß, dass es im Grunde genommen bereits eine Funktion als gibt Mage::getResourceModel();. Beispiel: Mage::getResourceModel('catalog/product');

Aber dieser Weg funktioniert auch gut.

Kann jemand erklären, warum nicht Mage::getModel() Um das Ressourcenmodellobjekt zu erhalten? Alle Vorschläge werden geschätzt.

War es hilfreich?

Lösung

Dies ist nur meine Meinung. Fühlen Sie sich also frei, es herauszufordern, aber ich kann, dass Sie theoretisch die Ressourcenmodellklasse ändern können. Zum Beispiel kann ich in meinem eigenen Modul dies hinzufügen:

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

Wenn ich benutzen würde Mage::getModel('catalog_resource/product') Ich würde die ursprüngliche Klasse bekommen und Instanz, da in der Konfiguration die Erklärung noch vorhanden ist.
aber durch Anruf Mage::getResourceModel('catalog/product') Jetzt bekomme ich meine neue Klasse.
Ich kann also zu dem Schluss kommen, dass der Grund, warum es „Erweiterbarkeit“ ist.
Ein anderer Grund könnte sein, eine Konsistenz zu behalten.
Wenn Sie anrufen Mage::getModel($someParam) Sie erhalten das entsprechende Ressourcenmodell mit demselben Parameter: $someParam.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top