Zum Inhalt

PHP 5 → 7 Migration

Historisch

Abgeschlossener Migrationsprozess. Alle Skripte sind auf PHP 7 portiert.

Überblick

Die Portierung aller Sachpool-Skripte von PHP 5.x auf PHP 7.3+ war einer der Hauptaufwände der Migration. PHP 7 entfernte mehrere in PHP 5 noch vorhandene Schnittstellen ersatzlos.

mysql → mysqli

Problem

Der alte mysql-Befehlssatz (PHP 5) ist in PHP 7 komplett entfernt. Alle Datenbankzugriffe mussten auf mysqli umgestellt werden.

Vorgehen

Fast alle Funktionen existieren 1:1 als mysqli-Variante. Unterschied: mysqli-Befehle benötigen die Datenbankverbindung als expliziten Parameter.

// Alt (PHP 5, nicht mehr funktionsfähig):
$result = mysql_query($query);
$row = mysql_fetch_array($result);

// Neu (PHP 7):
$result = mysqli_query($db, $query);
$row = mysqli_fetch_assoc($result);  // Typ muss explizit sein

Wichtige Unterschiede

Alt Neu Hinweis
mysql_query($q) mysqli_query($db, $q) $db immer übergeben
mysql_fetch_array() mysqli_fetch_assoc() Typ explizit angeben
mysql_real_escape_string($s) mysqli_real_escape_string($db, $s) $db nötig

Weitere PHP-Änderungen

@-Operatoren entfernt

@-Operatoren unterdrücken jede Fehlerausgabe und verhindern Debugging. Alle wurden entfernt und durch eigene Fehlerbehandlung ersetzt.

isset()-Prüfung vor in_array()

In PHP 7 strict: in_array() akzeptiert keine undefinierten Variablen mehr.

// Alt (PHP 5, in PHP 7 Fehler):
if (in_array($value, $array)) { ... }

// Neu (PHP 7):
if (isset($value) && in_array($value, $array)) { ... }

Multiple Deklarationen

include()require_once() / include_once(), um Mehrfachdeklarationen zu vermeiden.

Hartkodierte Pfade

Alle hardkodierten Pfade wurden in zentrale Konfigurationsparameter ausgelagert.

Zeichensatz

Alle Inhalte wurden auf UTF-8 portiert. ISO-8859-1 und ANSI/CP-1252 werden nicht mehr verwendet. utf8_encode() ist damit überflüssig.

HTML-Kompatibilität

  • HTML 4.01 Transitional → HTML 5
  • <head>/<body>-Trennung wird jetzt respektiert
  • DOM-vollständige Ausgabe für alle Modulkapselungen