Auf php.net gibt es schon einen recht ausführlichen Artikel was alles beim Wechsel von PHP 5.3 auf 5.4 beachten werden muss. Ich versuch hier auch noch mal eine schnelle Übersicht der einzelnen Änderung wieder zu geben:
Features
- Entfernt:
- Safe mode
- Magic quotes
- Salsa10 Hash-Algorithmus
- Salsa20 Hash-Algorithmus
- Übergabe einer Referenz beim Funktionsaufruf (Beispiel: doSomething(&$var))
- Zeitzone per TZ-Umgebungsvariable festlegen (Benutzt date.timezone oder date_default_timezone_set())
- Übergabe einer Variable an break/continue (Nur Übergabe einer Zahl ist erlaubt; 0 wird auch nicht mehr akzeptiert)
- Geändert:
- $_GET, $_POST, … als Namen eines Funktionsparameter verursacht E_ERROR
- Umwandlung von NULL, FALSE, oder einem leeren String in ein Objekt (durch hinzufügen einer Eigenschaft) verursacht nun E_WARNING anstelle eines E_STRICT
- Cast eines Arrays in einen String verursacht E_NOTICE und gibt weiterhin “Array” zurück
- Nicht numerische Index bei einen String (Beispiel: $a[‘foo’]) verursacht eine E_WARNING
- Double, Boolean oder NULL als Index bei einen String (Beispiel: $a[true]) verursacht eine E_NOTICE
- Falls keine Zeitzone angegeben ist, wird nun immer die Zeitzone “UTC” benutzt (Zuvor wurde versucht die tatsächliche Zeitzone der Maschine zu ermitteln) und ein E_WARNING ausgegeben
Funktionen
- Entfernt (Aufruf verursach einen E_ERROR mit Programmabbruch):
- define_syslog_variables()
- import_request_variables()
- session_is_registered()
- session_register()
- 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()
- mysqli_stmt::stmt()
- Geändert (Paramter wurden entfernt/hinzugefügt/geändert, Rückgaben auf bestimmte Inputs haben sich geändert):
- htmlentities(): Asiatische Zeichen verursachen eine E_STRICT
- ob_start(): Dritter Parameter wurde von “boolean erase” nach “integer flags” geändert
- array_combine(): Bei der Übergabe von zwei leeren Arrays wird nun auch ein leeres Array zurückgegeben (Zuvor wurde FALSE zurückgegeben)
- isset(): Bei einer Übergabe eines String mit einem nicht numerischen, Double, Boolean, NULL als Index (Beispiel: isset($a[‘foo’])) wird nun FALSE zurückgegeben
- empty(): Bei einer Übergabe eines String mit einem nicht numerischen, Double, Boolean, NULL als Index (Beispiel: empty($a[‘foo’])) wird nun TRUE zurückgegeben
- get_magic_quotes_runtime(): Rückgabe ist nun immer FALSE
- get_magic_quotes_gpc(): Rückgabe ist nun immer FALSE
- set_magic_quotes_runtime(): Aufruf verursacht nun einen E_CORE_ERROR
- Deprecated (Ein E_DEPRECATED wird ausgegeben und die Funktion wird in einer späteren PHP-Version entfernt):
- mcrypt_generic_end()
- mysql_list_dbs()
php.ini Direktiven
- Entfernt:
- allow_call_time_pass_reference
- define_syslog_variables
- highlight.bg
- magic_quotes_gpc
- magic_quotes_runtime
- magic_quotes_sybase
- mbstring.script_encoding (Benutzt statdessen zend.script_encoding)
- register_globals
- register_long_arrays
- safe_mode
- safe_mode_allowed_env_vars
- safe_mode_exec_dir
- safe_mode_gid
- safe_mode_include_dir
- safe_mode_protected_env_vars
- session.bug_compat_42
- session.bug_compat_warn
- y2k_compliance
Schlüsselwörter
- Hinzugekommen (Dürfen nicht mehr als Name einer Funktion, Klassene, Variable, Konstante, … genutzt werden):
- callable
- insteadof
- trait