Magento Blog: Anleitungen und Praxiswissen | Seite 356 | mironsoft
Magento Blog
-
20.01.2025
Ein uneingeschränkter Generic-Typparameter erlaubt fast alles und verhindert dadurch jeden sinnvollen Zugriff auf Eigenschaften oder Methoden. Mit dem extends Schlüsselwort, keyof und durchdachten Default-Werten lassen sich Typparameter gezielt eingrenzen, sodass der Compiler echte Fehler findet und Entwickler beim Schreiben von Code verlässliche Autovervollständigung erhalten. Der Artikel zeigt anhand einer typsicheren pick-fields Funktion, wie diese Konzepte zusammenspielen.
-
20.01.2025
Alpine.js hat kein eingebautes computed(), aber JavaScript-Getter füllen diese Lücke fast vollständig. Wer weiß, wie Getter innerhalb von Alpine.data() reaktiv funktionieren, verkettet werden und sich von einer normalen Methode unterscheiden, baut abgeleitete Werte, die genauso sauber sind wie Computed Properties in Vue oder useMemo in React.
-
20.01.2025
Die Wahl zwischen Adobe Commerce und Magento Open Source entscheidet über Lizenzkosten, verfügbare Enterprise-Features und die gesamte Betriebsstruktur eines Shops. Wer diese Entscheidung ohne belastbare Kriterien trifft, zahlt entweder für Funktionen, die er nie nutzt, oder baut mühsam nach, was in der anderen Edition längst enthalten wäre.
-
20.01.2025
PHPStorm kennt drei Interpreter-Typen: lokal, Docker/Docker Compose und SSH. Die Wahl hat direkte Auswirkungen auf Autocomplete-Qualität, Xdebug-Zuverlässigkeit und den Overhead beim Starten von Run Configurations. Dieser Artikel erklärt die Unterschiede und zeigt, wann welches Setup wirklich besser ist.
-
19.01.2025
Mit Tailwind v4 hält natives CSS-Nesting über die neue, Rust-basierte Engine offiziell Einzug in den Tailwind-Workflow. Wer jahrelang mit Sass-Verschachtelung gearbeitet hat, muss ein paar Gewohnheiten anpassen, gewinnt dafür aber eine Technik, die ganz ohne Präprozessor direkt im Browser läuft.
-
19.01.2025
Docker Hub war für viele Jahre die Standardantwort auf die Frage, wo Images gespeichert werden, doch Rate Limits, Kosten und Compliance-Anforderungen bringen Teams zunehmend zu alternativen Container Registries. GitLab, GitHub, Amazon ECR und selbst gehostetes Harbor bieten unterschiedliche Antworten auf dieselbe Frage, welche Registry zu welcher Situation passt.
-
19.01.2025
willReturn() deckt den überwiegenden Teil aller Mock-Bedürfnisse ab, einen festen Wert zurückgeben, fertig. Manchmal reicht das aber nicht: Ein Mock muss abhängig vom übergebenen Argument unterschiedlich reagieren, oder sein Verhalten muss sich über mehrere Aufrufe hinweg dynamisch ändern. Genau dafür gibt es willReturnMap und willReturnCallback. Dieser Artikel zeigt, wie beide funktionieren und wo die Grenze liegt, ab der ein Mock eigentlich schon zu viel Logik enthält.
-
19.01.2025
Ein regulärer Ausdruck, der auf kurzen Testeingaben in Millisekunden matcht, kann bei einer nur geringfügig längeren, bösartig konstruierten Eingabe plötzlich Sekunden oder Minuten brauchen, weil die PCRE-Engine exponentiell viele Rücksetzpunkte durchprobiert. Dieses als catastrophic Backtracking bekannte Phänomen ist einer der unterschätztesten Performance- und Sicherheitsfallstricke in PHP-Anwendungen, die Nutzereingaben gegen Regex-Patterns validieren. Dieser Artikel zeigt, wie Backtracking mechanisch funktioniert, an welchen Pattern-Strukturen es explodiert, und mit welchen konkreten Techniken sich das Risiko systematisch entschärfen lässt.
-
19.01.2025
Eine einklappbare Sidebar Navigation ist eines der häufigsten Layout Elemente in Dashboards und Admin Oberflächen. Mit Alpine.js lässt sich der komplette Zustand, vom Öffnen und Schließen über die Persistenz im Browser bis zur mobilen Overlay Variante, in einer kompakten Komponente abbilden, ohne React oder Vue laden zu müssen.
-
19.01.2025
Ein öffentlich erreichbarer GraphQL-Endpunkt, der beliebige Mutationen akzeptiert, ist ein offenes Einfallstor für Datenmanipulation, Spam und automatisierte Angriffe. GraphQL Persisted Mutations schließen diese Lücke, indem nur eine serverseitig vorab genehmigte Liste von Operationen überhaupt ausgeführt werden darf, alles andere wird abgelehnt, bevor auch nur ein Resolver aufgerufen wird.