Seite 10 - Design Patterns
-
Maxim Mironjuk
-
August 23, 2025
Eigene Events dispatchen, Observer registrieren, events.xml, die wichtigsten Core Events und die Frage: Plugin oder Observer? – vollständig beantwortet.
-
Maxim Mironjuk
-
August 23, 2025
Die Entscheidung Block vs. Template wird in den meisten Magento-2-Projekten intuitiv getroffen, selten bewusst begründet. Die Folge sind fette Block-Klassen mit Business-Logik, Templates mit direkten Model-Aufrufen und Code, der sich nicht isoliert testen lässt. Dieser Artikel zeigt, was wirklich in eine Block-Klasse gehört, was ins phtml-Template und wie ViewModels die Trennung in modernen Magento-2.4.8- und Hyva-Projekten sauber auflösen.
-
Maxim Mironjuk
-
August 19, 2025
Multi Tenancy entscheidet, ob eine SaaS-Anwendung Daten hunderter Mandanten sicher trennt oder eines Tages einen Datenabfluss zwischen Kunden riskiert. Dieser Beitrag vergleicht Shared Schema mit tenant_id, Schema-per-Tenant und Database-per-Tenant nach Isolation, Migrationsaufwand und Ressourcen-Isolation, damit die Entscheidung auf echten Kriterien statt auf Bauchgefuehl basiert.
-
Maxim Mironjuk
-
August 16, 2025
Eine hybride Architektur haelt transaktionale Kernprozesse in einer relationalen Datenbank, waehrend ein Dokumentenspeicher fuer variable, stark lesende Anwendungsfaelle uebernimmt. Wer Datenaufteilung, Synchronisation und Konsistenzgrenzen bewusst plant, bekommt die Vorteile beider Welten, ohne sich auf einen unsauberen Kompromiss einzulassen.
-
Maxim Mironjuk
-
August 13, 2025
Die Entscheidung zwischen NoSQL und einer relationalen Datenbank wird zu oft anhand von Popularitaet statt Anforderung getroffen. Wer stattdessen Zugriffsmuster, Skalierungsbedarf, Konsistenzanforderungen und Teamkompetenz konkret bewertet, erkennt schnell, in welchen Faellen NoSQL tatsaechlich Vorteile bringt und wo eine relationale Datenbank die deutlich robustere Wahl bleibt.
-
Maxim Mironjuk
-
August 10, 2025
TypeScript erlaubt Generics über konkreten Typen, aber keine Generics über Typkonstruktoren selbst. Eine Funktion, die für jeden beliebigen Container-Typ wie Array, Option oder Promise gleichermaßen funktioniert, lässt sich deshalb nicht direkt schreiben. Über eine Technik namens Defunctionalization, bekannt als URI-Pattern aus fp-ts, lässt sich dieses fehlende Feature dennoch praktikabel simulieren.
-
Maxim Mironjuk
-
Juli 29, 2025
Die native Checkout-Validierung in Magento 2 prüft Pflichtfelder und offensichtliche Formatfehler, aber keine geschäftsspezifischen Regeln wie Mindestbestellwerte pro Kundengruppe, gesperrte Lieferländer für bestimmte Produkte oder Zahlungsdaten-Konsistenz. Eigene Checkout-Validierung gehört sauber in Service Contracts und Plugins, nicht in fragile Frontend-Checks allein.
-
Maxim Mironjuk
-
Juli 28, 2025
Ein Split-Pane-Layout mit einem per Maus verschiebbaren Trennbalken zwischen zwei Bereichen ist aus modernen Code-Editoren wie VS Code nicht mehr wegzudenken und findet sich zunehmend auch in Web-Anwendungen mit Datei-Baum, Vorschau oder Vergleichs-Ansichten. Die Herausforderung liegt weniger im offensichtlichen Teil, dem Ziehen des Trennbalkens, sondern in den Details: dynamische Grid-Spaltenbreiten, die per JavaScript und nicht per CSS allein gesetzt werden müssen, Mindestbreiten-Constraints, damit kein Panel komplett verschwindet, und ein Cursor-Feedback, das während des Ziehens konsistent bleibt. Dieser Artikel zeigt den vollständigen Aufbau eines Split-Pane-Layouts mit Tailwind CSS am Beispiel eines Code-Editors mit Datei-Baum links und Editor-Bereich rechts.
-
Maxim Mironjuk
-
Juli 25, 2025
Formulare mit fünf Schritten, Checkout Prozesse mit Zahlungsstatus und Medienplayer mit Ladezuständen erzeugen schnell einen unübersichtlichen Wust an Booleans in useReducer. XState modelliert diese Logik als endlichen Automaten mit expliziten Zuständen und Übergängen, wodurch unmögliche Zustandskombinationen strukturell ausgeschlossen werden.
-
Maxim Mironjuk
-
Juli 25, 2025
Der ObjectManager ist das Service Locator Pattern in Magento 2 — und gleichzeitig das bekannteste Anti-Pattern der Plattform. Dieser Artikel erklärt, warum sein direkter Einsatz in Produktionscode verboten ist, welche Ausnahmen legitim sind und wie korrektes Dependency Injection aussieht.
-