Obwohl der meiste PHP 5 basierende Code ohne Änderungen funktionieren sollte, gibt es einige nicht abwärtskompatible Änderungen:
FALSE
zurück. set_magic_quotes_runtime() erzeugt eine Fehler der Stufe
E_CORE_ERROR
, wenn versucht wird
Magic quotes zu aktivieren.
break 1 + foo() * $bar;
zu schreiben.
Statische Argumente wie break 2;
funktionieren weiterhin.
Als Nebeneffekt dieser Änderung sind break 0;
und
continue 0;
nicht länger erlaubt.
UTF-8
anstatt ISO-8859-1
. Es ist zu beachten, dass die
Änderung des Ausgabezeichensatzes durch die default_charset
Konfigurationseinstellung htmlspecialchars/htmlentities nicht betrifft, es
sei denn, dass "" (eine leere Zeichenkette) als encoding Parameter an die
htmlspecialchars()/htmlentities()>/html_entity_decode()
Aufrufe übergeben wird. Allgemein wird dies jedoch nicht empfohlen, weil es
möglich sein sollte, den Ausgabezeichensatz zu ändern, ohne dass der
Laufzeitzeichensatz, der von diesen Funktionen verwendet wird, betroffen
ist. Die sicherste Lösung ist den Zeichensatz explizit bei jedem Aufruf von
htmlspecialchars(), htmlentities()
und html_entity_decode() anzugeben.
E_WARNING
erzeugen.
$a['foo']
, wobei $a eine
Zeichenkette ist, geben nun false für isset() und true
für empty() zurück, und erzeugen ein E_WARNING
, wenn
versucht wird, sie zu verwenden. Offsets der Typen double, bool und null
erzeugen ein E_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 ein E_WARNING
erzeugen, aber aus
Gründen der Abwärtskompatibilität zu 12 bzw. 5 konvertiert werden.
Hinweis: der folgende Code gibt unterschiedliche Ergebnisse zurück.
$str='abc';var_dump(isset($str['x'])); // false unter PHP 5.4 oder später, aber true unter 5.3 oder weniger
E_NOTICE
verursachen, aber das Ergebnis der Umwandlung ist
weiterhin die Zeichenkette "Array"
.
NULL
, FALSE
oder leere Zeichenketten durch Hinzufügen einer Eigenschaft in
ein Objekt zu konvertieren wird nun einen Fehler der Stufe E_WARNING
statt
E_STRICT
ausgeben.
function foo($_GET,
$_POST) {}
.
array()
anstatt FALSE
zurück, wenn zwei leere Arrays als
Parameter übergeben wurden.
E_STRICT
ausgegeben.
erase
in integer
flags
geändert. Es ist zu beachten, dass Code der
erase
ausdrücklich auf FALSE
setzt, sich unter PHP 5.4 nicht länger
wie erwartet verhält; dieses Beispiel
zeigt wie Code geschrieben wird, der kompatibel zu PHP 5.3 und PHP 5.4 ist.
read
, write
and except
arrays.
Die folgenden Schlüsselwörter sind nun reserviert, und dürfen nicht als Namen von Funktionen, Klassen usw. genutzt werden.
Folgende Funktionen wurden von PHP entfernt: