Unterschied zwischen / Controller und / Controllern

43

Eine Frage, die ich seit Ewigkeiten stellen wollte, theoretischer als alles andere.

Ich bin mit der Entwicklung von Erweiterungen unter Verwendung der normalen Magento-Modul-Dateistruktur bestens vertraut. Ich habe jedoch festgestellt, dass einige der Mage-Erweiterungen ein / Controller-Verzeichnis enthalten. Was ist der Zweck dieser Controller und inwiefern unterscheiden sie sich von denen, die normalerweise im Verzeichnis / controller verwendet werden?

Ich kann sehen, dass die Namen unterschiedlich strukturiert sind, also erfahre ich, dass sie auf andere Weise automatisch geladen werden. Aber welchen Zweck erfüllen / Controller-Klassen?

Vielen Dank an alle

thebluefox
quelle

Antworten:

45

Der Unterschied liegt im Autoloading, wie Sie bereits erwähnt haben. Im Allgemeinen sind Dateien in / Controller abstrakte (oder übergeordnete) Klassen, von denen Klassen in / controller erben .

Magento ist nicht darauf ausgelegt, das Verzeichnis / Controller zu kennen - es ist eher eine Frage der Konvention. Klassennamen geben an, wo sich diese übergeordneten Elemente auf dem Datenträger befinden, und der Autoloader sucht sie. Sie sehen dies in Mage_Sales:

class Mage_Sales_OrderController extends Mage_Sales_Controller_Abstract

Hier lokalisiert das Verkaufsmodul die Controller innerhalb app/code/core/Mage/Sales/controllersdes geladenen Controllers, und der geladene Controller fordert den Autoloader auf, dessen übergeordnetes Element zu lokalisieren app/code/core/Mage/Sales/Controller.

Dies dient dazu, die Bedenken zu trennen und es konkreten Steuerungsklassen zu ermöglichen, gemeinsame Funktionen zu erben.

Philwinkle
quelle
Das macht durchaus Sinn, und jetzt, da Sie es erklärt haben, scheint es tatsächlich ziemlich offensichtlich zu sein! Danke Phil!
thebluefox