Erster Überblick über Magento

Beruflich hat mich mein Weg nun doch zu Magento geführt, obwohl ich mir lange Zeit vorgenommen hatte mich von Shopsystemen fern zu halten und auch immer nur gehört habe, wie unnötig kompliziert gerade Magento gestaltet ist.

Ich muss sagen, ich habe mich sehr in Magento getäuscht. Sehr viele Parts sind gut durchdacht und bieten eine Form der Anpassbarkeit, die selbst vielen heutigen Frameworks noch fehlt. Die Art und Weise, wie große Teile der Anwendung über xml Datein definiert sind, erinnert mich stark an das Konzept des Dependency Injection Containers, nur das dieses Konzept im Gegensatz zu Magento erst seit 2009 offiziell benannt wurde.

Punkte dir mir besonders zusagten waren unter anderem die Trennung von Model und den Objekten, welche die Daten aus einer Datenbank holen. Was daran so toll ist, wird ein anderes mal erzählt. Die Integration des Eventobserver (In anderen Frameworks auch SignalSlot genannt) Prinzips erlaubt ein einfaches einklinken in Vorgänge zum auswerten oder ändern ohne Hand an den Code zu legen. Auch die letztendlich sehr klare Trennung von Funktion und Darstellung finde ich zu begrüßen, auch wenn sie im Darstellungsbereich leider keine so klare Struktur haben wie im Funktionsbereich.

Einen klaren Negativpunkt habe ich jedoch. Und zwar erlaubt es Magento Klassen mit identischen Namen zu platzieren, um Klassen aus dem Kern zu überlagern. Durch die Möglichkeit der Vererbung ist das Unnötig und ein schlechter und vor allem gefährlicher Stil sowieso.

Meine größten Anfangsprobleme hatte ich jedoch nicht mit dem Code, sondern damit mich im Adminbereich von Magento zurecht zu finden. Vermutlich liegt das aber auch daran, dass ich nie einen Onlineshop geführt habe oder überhaupt im Verkaufswesen tätig gewesen bin. Jedenfalls brauchte es ein wenig, bis ich hinter die Konzepte der Bedienung und deren Sinn gekommen bin. Daher würde ich jedem Entwickler raten der für Magento in irgend einer Weise Code schreiben will, sich zuerst das Wissen über die Bedienung anzueignen.