Code, Kram und Kaffee aus Bonn
⚠ Kein Support. Kein Newsletter. Kein Bullshit.
🐘 PHP – die Sprache die alle mögen dürfen wenn niemand zuschaut
| 47 Beiträge seit 2005 · von mysql_connect() bis PHP 8.3 · manche davon sollten nie geschrieben worden sein
| Aktuell: PHP 8.3 auf Prod. Läuft. Meistens.
🐘
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
· schlabonskiNEU
PHP 8.3
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
· schlabonski
LEGACY / REFACTORING
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?
· schlabonski
PHP 8.1
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
· schlabonski
KLASSIKER / SICHERHEIT
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.