PHP: Anleitungen und Praxiswissen | Seite 3 | mironsoft Blog
PHP
-
15.03.2026
Das Decorator Pattern löst ein Problem, das reine Vererbung nicht sauber lösen kann: mehrere unabhängige Zusatzverhalten, etwa Logging, Caching und Validierung, flexibel und in beliebiger Reihenfolge kombinieren, ohne für jede Kombination eine eigene Unterklasse zu bauen. Dieser Artikel zeigt, wie das Decorator Pattern in PHP Interface-Konformität wahrt und wann es dem Aufblähen von Vererbungshierarchien vorzuziehen ist.
-
13.03.2026
Wer Nutzereingaben ungeprüft in shell_exec, exec oder system einbaut, öffnet Angreifern die Tür zur vollständigen Kontrolle über den Server. Dieser Artikel zeigt, wie Command Injection in PHP-Anwendungen entsteht, wo escapeshellarg und escapeshellcmd wirklich helfen und an ihre Grenzen stoßen, und warum native PHP-Bibliotheken und die Symfony Process Komponente die robusteste Lösung sind.
-
10.03.2026
Code-Generierung zur Buildzeit erzeugt fertigen, kompilierbaren PHP-Code, bevor eine Anwendung überhaupt startet, statt Metadaten bei jedem Request erneut per Reflection auszulesen. Symfony und Laravel setzen diese Technik für kompilierte Container ein, weil generierter Code von OPcache wie regulärer Code behandelt wird und Reflection-Overhead im heißen Pfad vollständig entfällt.
-
03.03.2026
Ein einziges universelles Escaping bringt Magento- und Hyvä-Shops in Gefahr, weil HTML, Attribute, JavaScript, URLs und CSS jeweils eigene Syntaxregeln und eigene Angriffsvektoren haben. Dieser Artikel zeigt, warum htmlspecialchars allein nicht reicht, wie die Hyvä-Escaper-Klasse den passenden Kontext trifft und wie Content-Security-Policy als zusätzliche Verteidigungslinie wirkt.
-
01.03.2026
Wenn eine externe API langsam antwortet oder komplett ausfällt, wartet jeder aufrufende Request in einer typischen PHP-Anwendung brav auf sein Timeout, während sich im Hintergrund PHP-FPM-Worker stauen und die eigene Anwendung mit in den Abgrund reißen. Das Circuit-Breaker-Pattern durchbricht diese Kette, indem es nach einer bestimmten Anzahl von Fehlern den Stromkreis unterbricht und weitere Aufrufe sofort mit einem Fallback beantwortet, statt sie erneut ins Leere laufen zu lassen.
-
25.02.2026
Ungeprüfte Composer Abhängigkeiten zählen zu den häufigsten Einfallstoren in Magento und PHP Projekten. Dieser Artikel zeigt, wie composer audit, Roave Security Advisories und automatisierte CI Pipelines bekannte Schwachstellen zuverlässig aufdecken, bevor sie in Produktion landen, und wie Teams echtes Risiko von reinem Scan Rauschen unterscheiden, ohne jede einzelne Warnung manuell zu prüfen.
-
25.02.2026
Eine einzelne GraphQL-Mutation wirkt nach außen atomar, verbirgt innen aber oft mehrere Schreibschritte, Zahlungsbuchung, Lagerreservierung, Versandauftrag. Transaktionale Mutations in GraphQL müssen genau diese Mehrstufigkeit absichern, mit Unit of Work, Idempotency Keys und dem Saga-Pattern für verteilte Konsistenz.
-
24.02.2026
Die Werkseinstellungen von OPcache sind für einen Entwickler-Laptop gedacht, nicht für einen PHP-FPM-Pool mit hoher Last. Wer memory_consumption, max_accelerated_files und validate_timestamps nie angepasst hat, verschenkt spürbare Antwortzeit und riskiert Wasted Memory, Hash-Kollisionen und unnötige Dateisystem-Stats bei jedem Request. Dieser Leitfaden zeigt, welche OPcache-Tuning-Parameter tatsächlich messbare Wirkung haben, wie man sie korrekt dimensioniert und wie ein sicherer Zero-Downtime-Deployment-Workflow damit aussieht.
-
22.02.2026
void bedeutet, eine Funktion liefert keinen sinnvollen Rückgabewert, kehrt aber trotzdem normal zurück. never bedeutet etwas fundamental anderes: Die Funktion kehrt überhaupt nicht zurück, sie wirft immer eine Exception oder beendet das Skript. Seit PHP 8.1 lässt sich dieser Unterschied direkt in der Signatur ausdrücken.
-
22.02.2026
Manche Tests lassen sich nur sauber schreiben, wenn PHPUnit sie in einem komplett neuen PHP-Prozess ausfuehrt: etwa wenn Legacy-Code Konstanten definiert, die nicht neu gesetzt werden koennen, oder wenn statische Zustaende so tief verwoben sind, dass ein Reset in tearDown nicht ausreicht. @runInSeparateProcess loest dieses Problem zuverlaessig, aber nicht kostenlos: Jeder isolierte Test startet einen eigenen PHP-Interpreter, was die Laufzeit einer Suite spuerbar in die Hoehe treiben kann, wenn man es zu grosszuegig einsetzt.