Nicht rückwärtskompatible Änderungen
Obwohl der meiste PHP 5 basierende Code ohne Änderungen funktionieren sollte,
gibt einige nicht rückwärtskompatible Änderungen:
-
Die break
und continue
Anweisungen akzeptieren keine variablen Argumente mehr, d.h. es ist nicht
möglich break 1 + foo() * $bar; zu schreiben. Natürlich
können Sie aber weiterhin statische Argumente wie break
2; verwenden.
-
Safe mode wird
nicht länger unterstützt. Alle Anwendungen, die sich auf safe mode verlassen,
benötigen unter Umständen Anpassungen bezüglich der Sicherheit.
-
Die Salsa10 und Salsa20 Hash-Algorithmen wurden entfernt.
-
Das Setzen der Zeitzone mit der TZ Umgebungsvariablen wird nicht länger von
der date Extension unterstützt. Die Extension wird nicht länger versuchen die
Standardzeitzone zu erraten, wenn keine eingestellt ist; statt dessen wird immer
auf "UTC" zurückgefallen.
-
Magic quotes wurde entfernt.
Anwendungen, die sich auf dieses Feature verlassen, müssen aktualisiert
werden, um Sicherheitsprobleme zu vermeiden.
get_magic_quotes_gpc() und
get_magic_quotes_runtime() geben nun immer false
zurück. set_magic_quotes_runtime() erzeugt
E_CORE_ERROR
.
-
Nichtnumerische Zeichenkettenoffsets, z.B. $a['foo'], wobei $a eine
Zeichenkette ist, geben nun false für isset() und true
für empty() zurück, und erzeugen eine Warnung, wenn
versucht wird, sie zu verwenden. Offsets der Typen double, bool und null
erzeugen eine Notice. Numerische Zeichenketten (z.B. $a['2']) funktionieren wie
bisher. Es ist zu beachten, dass Offsets wie '12.3' und '5 irgendwas' als
nichtnumerisch angesehen werden, und eine Warnung erzeugen, aber aus
Gründen der Abwärtskompatibilität zu 12 bzw. 5 konvertiert werden.
-
NULL
, FALSE
oder leere Zeichenketten durch hinzufügen einer Eigenschaft in
ein Objekt zu konvertieren wird nun eine Warnung statt eines
E_STRICT
Fehlers ausgeben.
-
Konvertieren von Arrays zu String wird nun eine
E_NOTICE
verursachen. Das Ergebnis der Umwandlung ist
weiterhin "Array".
-
Parameternamen, die Superglobale schattieren, verursachen nun
einen fatalen Fehler. Das verbietet Code wie function foo($_GET,
$_POST) {}.
-
array_combine() gibt nun array()
anstatt
FALSE
zurück, wenn zwei leere Arrays als
Parameter übergeben wurden.
-
Referenzübergabe zur Laufzeit
wurde entfernt.
-
htmlentities() now emits an
E_STRICT
warning when used with
asian character sets, as in that case htmlentities() has (and already had before
this version) the same functionality as htmlspecialchars().
Die folgenden Schlüsselwörter sind nun reserviert und dürfen nicht in Funktions-,
Klassen- usw. namen genutzt werden.
Folgende Funktionen wurden von PHP entfernt:
-
define_syslog_variables()
-
import_request_variables()
-
session_is_registered(), session_register() und session_unregister()
-
mysqli_bind_param(), mysqli_bind_result(), mysqli_client_encoding(), mysqli_fetch(), mysqli_param_count(),
mysqli_get_metadata(), mysqli_send_long_data(), mysqli::client_encoding() und mysqli_stmt::stmt()