Forum und email

Alten Code mit neuen PHP-Versionen benutzen

Dadurch dass PHP eine immer beliebtere Skriptsprache ist, gibt es immer mehr öffentliche Quellen und Bibliotheken mit Code, den Sie wieder verwenden können. Die PHP-Entwickler haben versucht, den größten Teil der Sprache abwärtskompatibel zu halten. Das bedeutet, dass ein Skript, das für eine ältere PHP-Version geschrieben wurde, (im Idealfall) ohne Änderungen auch unter einer neueren PHP-Version läuft. In der Praxis sind aber meist einige Änderungen nötig.

Zwei der wichtigsten aktuellen Änderungen, die alten Code betreffen, sind:

  • Die Missbilligung der alten $HTTP_*_VARS-Arrays (die global gemacht werden mussten, wenn man sie innerhalb einer Funktion nutzen wollte). In PHP » 4.1.0 wurden die folgenden superglobalen Arrays eingeführt: $_GET, $_POST, $_COOKIE, $_SERVER, $_FILES, $_ENV, $_REQUEST und $_SESSION. Die älteren $HTTP_*_VARS-Arrays, wie $HTTP_POST_VARS, existierten bereits seit PHP 3 und sind auch immer noch verfügbar. Seit PHP 5.0.0 können Sie die Registrierung der langen von PHP vordefinierten Arrays mit der Konfigurationsoption register_long_arrays abschalten.
  • Externe Variablen werden standardmäßig nicht mehr im globalen Namensraum registriert. Mit anderen Worten, seit PHP » 4.2.0 ist off die Standard-Einstellung für die PHP-Direktive register_globals. Die empfohlene Methode, auf diese Werte zuzugreifen, ist, die oben genannten superglobalen Arrays zu verwenden. Ältere Skripte, Bücher und Tutorials gehen eventuell davon aus, dass diese Einstellung auf on steht. Wäre die Einstellung z.B. on, dann wäre die Variable $id aus dem URL https://www.example.com/foo.php?id=42 verfügbar. Unabhängig davon, ob on oder off, ist immer $_GET['id'] verfügbar.
Für weitere Details über diese Änderungen siehe die Seite über vordefinierte Variablen und die Links dort.