PHP: Anleitungen und Praxiswissen | Seite 22 | mironsoft Blog
PHP
-
30.01.2025
PHP-Generators verwandeln gewöhnliche Funktionen über das Schlüsselwort yield in Iteratoren, die Werte einzeln statt komplett im Speicher erzeugen. Statt zehntausende Zeilen einer CSV-Datei oder ein komplettes Datenbank-Resultset als Array zu laden, liefert ein Generator Element für Element und hält den Speicherverbrauch konstant, unabhängig von der Datenmenge. Wer große Importe, Exporte oder Streaming-Pipelines in PHP 8.4 baut, kommt an yield kaum vorbei.
-
29.01.2025
PHP verwaltet Speicher scheinbar unsichtbar im Hintergrund, doch wer versteht, wie Reference Counting, der Zend Memory Manager und die Garbage Collection tatsächlich zusammenspielen, erkennt Speicherlecks in langlebigen Prozessen, bevor sie zum Produktionsproblem werden. Dieser Artikel erklärt die zval-Struktur, zirkuläre Referenzen, den Algorithmus des Cycle Collectors und die praktischen Werkzeuge zur Diagnose, für PHP-Entwickler, die tiefer als bis zu memory_limit denken wollen.
-
27.01.2025
Der Nullsafe-Operator ?-> ersetzt verschachtelte if-isset-Blöcke und lange &&-Ketten durch eine einzige, flache Ausdruckskette: Sobald ein Glied der Kette null ist, bricht die gesamte Auswertung sofort und ohne Warning ab und liefert null zurück, statt eine Exception zu werfen, was gerade bei tiefen Objektgraphen aus DTOs und API-Antworten den Code erheblich lesbarer macht.
-
26.01.2025
Wer Value Objects nur als hübschere Datenklassen versteht, verschenkt ihren eigentlichen Nutzen: Ein Value Object kapselt Gleichheit, Gültigkeit und Unveränderlichkeit an genau einer Stelle im Code, statt diese Regeln über Services, Controller und Formulare zu verstreuen. Dieser Artikel zeigt in reinem, frameworkunabhängigem PHP 8.4, wie man equals() statt naivem Vergleich einsetzt, Invarianten im Constructor erzwingt und mit readonly-Properties echte Unveränderlichkeit erreicht, ohne dabei die Balance zwischen zu kleinen und zu großen Objekten zu verlieren.
-
25.01.2025
Klassisches PHP im shared-nothing Modell kennt keinen echten Connection Pool im Speicher eines einzelnen Prozesses. Wer trotzdem den Overhead ständiger Neuverbindungen vermeiden will, braucht entweder persistente Verbindungen mit klaren Grenzen, einen externen Connection Pooler wie ProxySQL, oder ein Long-Running-Prozessmodell wie Swoole.
-
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
Nicht jede Zufallszahl in PHP ist gleich sicher. Während rand() und mt_rand() für Spiele und Simulationen ausreichen, sind sie für Tokens, Passwort-Reset-Links oder kryptographische Schlüssel gefährlich vorhersagbar. random_bytes, random_int und die Randomizer-Klasse aus PHP 8.2 liefern echte, kryptographisch sichere Zufallswerte für genau diese Fälle.
-
18.01.2025
Wenn eine PHP-Anwendung an eine harte Rechenleistungsgrenze stößt, führte der klassische Weg früher immer über eine eigene C-Erweiterung mit eigenem Build-Prozess. FFI erlaubt es, bestehende native Bibliotheken direkt aus PHP-Code heraus anzusprechen, ganz ohne Compiler-Toolchain im Deployment, und macht damit performancekritischen Code für viel mehr Projekte praktikabel als früher.
-
17.01.2025
Wer Deprecation-Warnungen mit Error-Reporting-Tricks stummschaltet, verschiebt echte Migrationsarbeit nur auf einen späteren, teureren Zeitpunkt. Ein eigener Error-Handler mit strukturiertem Logging, statische Analyse mit PHPStan und Rector sowie ein priorisierter Backlog verwandeln Deprecations von ignoriertem Rauschen in einen messbaren, planbaren Migrationsprozess.