Frage

Wird es als gut/schlechte Architektur angesehen, einen Helfer einzurichten und dies alle Konstanten, Variablen und Daten zu erledigen?

Ich schreibe derzeit eine ziemlich einfache Erweiterung, die mit Mitglieds-/Nicht -Mitglied -Anmeldungen zu tun hat - meistens Frontend -Sachen zB. "Denken Sie daran", in bestimmten Fällen zu überprüfen, in bestimmten Fällen geöffnet zu werden usw. Verwenden Sie Cookies für diesen und keinen realen Datenbankzugriff mit sehr minimalen Konfigurationsoptionen über Admin.

War es hilfreich?

Lösung

"Konstanten, Variablen und Daten", diese klingen für mich 'Modell Dinge.

Im Allgemeinen hängt die Antwort wirklich von dem spezifischen Problem ab, das Sie lösen möchten. Aber ich neige dazu, diese Art von Dingen in einem Modell zu verkörpern - auch wenn es die Datenbank nicht verwenden muss.

Denken Sie nun daran, ein Modell repräsentiert Ihre Domäne (wobei Domain Business/Anwendungslogik bedeutet) und nicht nur die Datenpersistenz. Dies kann verwirrend sein, da die Leute heutzutage das Modell "Modell" sehen und sofort an die Datenbank denken.

Die Ausnahme dieser Regel besteht darin, dass Sie über einen Block oder eine Vorlage auf Verhalten zugreifen müssen. Es ist sehr bequem, Helfer zu verwenden:

$this->helper('foomodule')->formatRefererenceNumber($myModel->getReferenceNumber())

Dies ist viel angenehmer (und rechnerisch effizienter) als die Alternative

Mage::getModel('foomodule/model')->formatReferenceNumber($myModel->getReferenceNumber()

Natürlich denken Sie vielleicht, sollte nicht FormatreferenceNumber nur eine Methode auf $ myModel sein? Und möglicherweise ja. Wenn Sie es jedoch in einem Helfer haben, können Sie die Sorge, eine Referenznummer von der Speicherung zu formatieren, trennen. Sie können problemlos alternative Formatierungsoptionen - möglicherweise über verschiedene Helfer - angeben, ohne Ihr Modell abzuwägen.

Das andere Mal, als Sie Helpers Over -Modelle verwenden möchten, ist, wenn Sie viel PHP -Code in Vorlagen schreiben. Nehmen wir an, Sie haben einen Tisch mit Zeilen und möchten, dass ungerade Zeilen eine Farbe haben und sogar eine andere Reihen haben. Ich extrahiere diese Art von Funktionalität in einen Helfer.

Im Allgemeinen besteht die Heuristik, die ich folge, Geschäftsdaten und Logik in Modellen zu halten und Helfer zu verwenden, um Daten in bestimmte Formen für die Präsentation auf dem Frontend umzuwandeln.

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