Symfony: Anleitungen und Praxiswissen | Seite 10 | mironsoft Blog
Symfony
-
06.05.2025
Custom Bundles galten lange als der Standard für wiederverwendbare Symfony-Module. Mit PHP-Config-Klassen, Symfony Flex und modernen DI-Patterns gibt es heute leichtgewichtigere Wege — aber für öffentliche Pakete, komplexe Container-Manipulation und Compiler Passes sind Bundles nach wie vor das richtige Werkzeug.
-
02.05.2025
Lange Cache-Zeiten für CSS und JavaScript sind gut für die Performance, aber gefährlich, wenn sich der Inhalt einer Datei ändert, ihre URL jedoch gleich bleibt. Dieser Artikel zeigt, warum content-hash-basierte Versionierung über json_manifest_path oder AssetMapper der Query-String-Variante vorzuziehen ist, wie Nginx und CDN korrekt konfiguriert werden und welche Fallstricke bei Multi-Server-Deployments ohne geteiltes Manifest lauern.
-
27.04.2025
Das N+1-Problem ist der häufigste Performance-Killer in Symfony-Projekten mit Doctrine ORM. Es entsteht still, oft in scheinbar harmlosem Template-Code, und erzeugt hunderte Datenbankabfragen dort, wo eine einzige ausreichen würde. Mit DQL, dem QueryBuilder und JOIN FETCH lässt es sich systematisch eliminieren.
-
25.04.2025
Jede Symfony-Anfrage braucht einen fertigen Dependency-Injection-Container, und wie dieser Container gebaut, kompiliert und gecacht wird, entscheidet über einen erheblichen Teil der Boot-Zeit. Container Warmup mit cache:warmup verschiebt die teure Kompilierung aus dem Request in die Deployment-Phase.
-
25.04.2025
Wie du mit einem eigenen Doctrine DBAL Type ein Geld-Objekt oder eine E-Mail-Value-Object direkt in Entities nutzt, inklusive convertToPHPValue, convertToDatabaseValue und Registrierung.
-
20.04.2025
Doctrine bringt zwei grundverschiedene Cache-Mechanismen mit, die auf den ersten Blick beide dasselbe Ziel verfolgen, nämlich weniger Last auf der Datenbank, aber strukturell komplett unterschiedlich arbeiten. Der Query Result Cache merkt sich das fertige Ergebnis einer konkreten Abfrage, während der Second-Level Cache einzelne Entities unabhängig von der Abfrage, die sie ursprünglich geladen hat, vorhält. Wer beide Mechanismen verwechselt, baut entweder eine Caching-Schicht, die bei jeder Schreiboperation veraltete Daten ausliefert, oder eine, die viel zu aufwendig für das eigentliche Problem ist. Dieser Artikel klärt die Unterschiede an konkreten Beispielen und zeigt, wie man Cache-Invalidierung sauber umsetzt.
-
19.04.2025
Eine .env-Datei mit Klartext-Passwörtern im Deployment-Artefakt ist ein Sicherheitsrisiko, das viele Symfony-Teams stillschweigend akzeptieren. Vault Management mit HashiCorp Vault ersetzt statische Secrets durch dynamische, kurzlebige Credentials, die automatisch rotieren und lückenlos protokolliert werden. Dieser Artikel zeigt, wie Symfony konkret an Vault angebunden wird.
-
17.04.2025
In den meisten Anwendungen gibt es drei, vier verschiedene Bibliotheken für Benachrichtigungen: eine für E-Mails, eine für Slack, eine für SMS, eine für Push-Notifications. Symfony Notifier vereint alle Kanäle hinter einem einzigen Interface und einer einzigen Dispatch-Methode — mit konfigurierbarem Routing, kanalspezifischen Nachrichten und der Möglichkeit, eigene Bridges für interne Systeme zu schreiben.
-
12.04.2025
In Symfony bedeutete das Registrieren von Event Listenern, Voters, Commands und Twig-Extensions lange: Interface implementieren und separat in services.yaml einen Tag-Eintrag schreiben. Das autoconfigure-Feature erkennt bekannte Interfaces automatisch und vergibt die notwendigen DI-Tags, ohne dass ein einziger Tag manuell geschrieben werden muss.
-
11.04.2025
Webpack konfigurieren, npm-Pakete warten, Build-Pipelines debuggen — das kostet in Symfony-Projekten oft mehr Zeit als die eigentliche Frontendlogik. Symfony AssetMapper macht den Bundler für die meisten Projekte überflüssig: Import Maps, automatisches Versioning und ES-Module direkt aus PHP, ohne Node.js-Build-Schritt.