🖥
schlabonski.de – Code, Kram und Kaffee
_
schlabonski.de Logo
Code, Kram und Kaffee aus Bonn ⚠ Kein Support. Kein Newsletter. Kein Bullshit.
🐘
php.exe – Beiträge und Meinungen
_

PHP – meine ehrlichste Beziehung

PHP und ich kennen uns seit ungefähr 1999. Das ist länger als die meisten meiner anderen Beziehungen und deutlich beständiger als meine Meinung über JavaScript-Frameworks. Ich hab PHP geliebt, gehasst, ignoriert, wieder gebraucht und inzwischen eine Art Frieden damit geschlossen. Es ist nicht perfekt. Es ist auch nicht das was die Leute draus machen wenn sie "ist doch PHP" abfällig sagen. Es ist eine Sprache die funktioniert, wenn man weiß was man tut – und die einem auf die Füße fällt wenn man's nicht tut. Wie eigentlich jede andere Sprache auch, aber bei PHP machen's mehr Leute falsch weil die Einstiegshürde so niedrig ist.

Hier landen alle meine PHP-Beiträge: Tutorials, Erfahrungsberichte, gelegentliche Verzweiflungsrufe und ab und zu mal was das tatsächlich nützlich ist. Sortiert nach Datum, neuestes zuerst. Wer alles will – das Archiv hat's.

Wer professionelle Webdesign Bonn Leistungen sucht statt eines Entwickler-Blogs mit gelegentlichem Sarkasmus – da bin ich ehrlich gesagt die falsche Adresse. Hier gibt's Code, keine Angebote.

// 2005 – so hab ich das gelernt. Bitte nicht nachmachen. $con = mysql_connect("localhost", "root", ""); $result = mysql_query("SELECT * FROM users WHERE id=" . $_GET['id']); // 2024 – so sollte das aussehen. $pdo = new PDO('mysql:host=localhost;dbname=mydb', $user, $pass); $stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id'); $stmt->execute([':id' => (int) $_GET['id']]);

Aktuelle PHP-Beiträge

PHP 8.3 – ich hab's ausprobiert und lebe noch

Update auf einem Produktivsystem, eine Stunde vor Kundentermin. Ja, ich weiß. Typed Class Constants sind wirklich nett, readonly Properties noch netter, und der neue array_find() hätte mir letztes Jahr ungefähr 40 Minuten Lebenszeit gespart. Das neue json_validate() ebenfalls – ich hab vorher immer decode + Fehlercheck gemacht was sich immer ein bisschen falsch angefühlt hat.

Was beim Update kurz gehakt hat: eine Extension die noch nicht 8.3-kompatibel war, ein deprecated Notice der mich 20 Minuten gekostet hat und ein Konfigurationswert der sich still verändert hatte. Sonst: problemlos. Klare Empfehlung zum Update – aber mit Staging-Umgebung davor, nicht so wie ich.

Legacy-PHP refactoren ohne alles kaputt zu machen

Globals überall. Keine Tests. Include-Ketten die sich über sieben Dateien ziehen. SQL direkt in HTML-Ausgabe eingebettet. Eine Datei die 1.400 Zeilen lang ist und "functions.php" heißt. Klingt bekannt? Dann bist du vermutlich auch schon mal auf eine Codebase aus 2009 losgelassen worden.

Was ich gelernt hab: man fängt nicht oben an und refactort durch. Man fängt am Rand an. Man schreibt zuerst Tests für das was schon funktioniert – auch wenn die Tests hässlich sind. Man extrahiert langsam, commitet oft, deployt häufig auf Staging. Und man akzeptiert dass so ein Projekt Monate dauert, nicht Wochen. Wer das nicht akzeptiert verbrennt sich daran.

PHP 8.1 Fibers – brauch ich das eigentlich?

Fibers sind PHP's Antwort auf Coroutines. Leichtgewichtige Nebenläufigkeit ohne Threads, ohne den vollen Overhead von Promises. Ich hab eine Woche damit experimentiert und dann festgestellt dass ich für 90% meiner Arbeit Fibers schlicht nicht brauche. Für die anderen 10% sind sie aber tatsächlich elegant – vor allem in Kombination mit Swoole oder ReactPHP wenn man lang-laufende Prozesse hat. Der Beitrag erklärt wann Fibers Sinn machen und wann man einfach einen Job-Queue nimmt und fertig ist.

Warum mysql_* wirklich weg muss – und zwar jetzt

Ich hab diesen Beitrag 2013 geschrieben. Er steht noch online weil ich 2024 immer noch Projekte sehe die mysql_connect() benutzen. Das ist keine Übertreibung. Das ist mein Leben. Der Beitrag erklärt warum die alten mysql_*-Funktionen ein Sicherheitsrisiko sind, was PDO und MySQLi bieten und warum der Wechsel eigentlich nicht so schlimm ist wie er aussieht. Auch wenn er sich bei 4.000 Zeilen Legacy-Code so anfühlt.


→ alle 47 PHP-Beiträge im Archiv