Magento Blog: Anleitungen und Praxiswissen | Seite 307 | mironsoft
Magento Blog
-
25.03.2025
Ein Mega Menu Dropdown mit mehrspaltigen Unterkategorien ist eines der komplexesten Navigationsmuster im E-Commerce, und eines der am häufigsten falsch umgesetzten in Bezug auf Barrierefreiheit. Mit Alpine.js, dem Disclosure-Pattern statt falscher Menu-Rollen und sauberer Tastatursteuerung lässt sich ein Mega Menu bauen, das für Maus, Tastatur und Screenreader gleichermaßen funktioniert.
-
25.03.2025
Wann Normalisierung Reporting ausbremst, wann Denormalisierung die richtige Antwort ist und wie Magento mit Aggregationstabellen das Problem elegant löst.
-
25.03.2025
Eine OpenAPI-Spezifikation, die nur für die Dokumentation existiert, bringt wenig. Wer sie als bindenden Vertrag zwischen Frontend, Backend und externen Konsumenten behandelt – und sie mit Contract-Tests, RFC-7807-Fehlerformaten, Security-Schemas und automatisiertem Tooling absichert – macht aus einer YAML-Datei ein produktives Qualitätswerkzeug.
-
25.03.2025
Tests, die von der aktuellen Uhrzeit, zufällig generierten UUIDs oder Pseudozufallswerten abhängen, sind flaky: Sie schlagen manchmal fehl, manchmal nicht, und die Ursache ist schwer zu reproduzieren. Clock-Interfaces, UUID-Factories und kontrollierter Zufall lösen dieses Problem grundlegend – ohne den Produktionscode zu komplizieren.
-
25.03.2025
Jahrelang mussten Mengenoperationen in JavaScript mühsam mit filter() und has() zusammengebaut werden. Die neuen JavaScript Set Methods lösen dieses Problem mit einer sauberen, lesbaren API – direkt auf dem Set-Objekt, ohne externe Bibliotheken und ohne Workarounds.
-
25.03.2025
Warum kann ein <code style="background:rgba(255,255,255,0.15);color:#fff;">Product</code>-Objekt nicht direkt per Constructor injiziert werden — aber ein <code style="background:rgba(255,255,255,0.15);color:#fff;">ProductRepository</code> schon? Die Unterscheidung zwischen Injectable und Non-Injectable Objects ist fundamental für Magento 2 DI. Virtual Types lösen dazu ein häufiges di.xml-Problem elegant.
-
24.03.2025
Ein Trait kopiert echte Methodenrümpfe in eine Klasse hinein, ein Interface verspricht nur, dass diese Methoden existieren, ohne eine einzige Zeile Implementierung mitzuliefern. Wer Traits und Interfaces vermischt oder gegeneinander austauscht, verliert genau die Trennschärfe, die objektorientiertes Design erst robust macht: horizontale Wiederverwendung von Verhalten auf der einen Seite, verbindliche Verträge für Polymorphismus und Testbarkeit auf der anderen.
-
24.03.2025
Phil Karlton wird das Zitat zugeschrieben, es gebe nur zwei schwere Dinge in der Informatik: Cache-Invalidierung und die Benennung von Dingen. In verteilten Systemen mit mehreren Cache-Layern, CDN, Anwendungs-Cache und Datenbank-Cache, wird dieses Problem noch einmal deutlich komplexer, weil jede Schicht ihre eigene Invalidierungslogik und ihre eigene zeitliche Verzögerung mitbringt. Wer Time-based und Event-based Invalidierung sowie Cache-Tagging gezielt kombiniert, kann das Problem beherrschbar machen, auch wenn es sich nie vollständig auflösen lässt.
-
24.03.2025
Flatpickr bringt Kilobytes jQuery-Erbe und eine externe Abhängigkeit mit. Ein eigener Alpine.js-Datepicker entsteht aus weniger als 80 Zeilen reaktivem JavaScript – mit Monatsnavigation, Keyboard-Support, Min/Max-Grenzen und vollständiger ARIA-Semantik, ohne eine einzige externe Abhängigkeit.
-
24.03.2025
PHPStan Level max deckt Fehlerklassen auf, die Unit-Tests oft übersehen: falsche Argumenttypen, riskante Null-Zugriffe, unerreichbaren Code. Ein wachsendes Projekt erreicht dieses Level jedoch nicht über Nacht, sondern über Level-Ratcheting, eine gepflegte Baseline-Datei, sauber typisierte Generics und eigene Regeln für projektspezifische Konventionen.