Hilfe:PHP und Unterschiede in den Versionen
Zur Navigation springen
Zur Suche springen
Info
Die aufgeführten Informationen sind nicht vollständig und beinhalten v.a. keine reine Fehlerbereinigungen (bug fixes).
Zum Selberlesen
PHP 5
PHP 5.4
neu
entfernt
abgekündigt
geändert
PHP 5.3
neu
(Vgl.: http://www.php.net/manual/de/migration53.new-features.php)
- Unterstützung für Namensräume (namespaces)
- Unterstützung für Späte Statische Bindung (Late Static Bindings)
- Sprungmarken (jump labels, limited goto)
- Native Closures (Lambda/Anonymous Funktionen)
- zwei neue "magic methods":
- __callStatic
- __invoke
- Nowdoc syntax wird unterstützt
- Heredocs darf zur Initialisierung statischer Variablen und von Werten und Konstanten von Klassen verwendet werden
- Heredocs dürfen mit doppelten Anführungsstrichen deklariert werden
- Konstanten können außerhalb einer Klassen mit dem Schlüsselwort const deklariert werden
- Der ternary operator hat nun die Kurzform ?:.
- Der HTTP stream wrapper berücksichtigt nun alle Status Codes von 200 bis 399 als "erfolgreich"
- Es ist nun ein dynamischer Zugriff auf statische Methoden möglilch
- Exceptions können nun verschachtelt sein
- Ein Aufräumjob (garbage collector) für zirkuläre Referenzen ist neu und standardmäßig aktiv
- Die Funktion mail() unterstützt nun das Logging mit dieser Funktion versendeter Mails
Neue Funktionsparamete im PHP Core:
- clearstatcache() - neu: clear_realpath_cache, filename.
- copy() - ein neuer stream context Parameter: context.
- fgetcsv() - neu: escape.
- ini_get_all() - neu: details.
- nl2br() - neu: is_xhtml.
- parse_ini_file() - neu: scanner_mode.
- round() - neu: mode.
- stream_context_create() - neu: params.
- strstr() und stristr() - neu: before_needle.
Neue Funktionen werden bereitgestellt.
Neue Klassenmethoden werden bereitgestellt.
entfernt
- s2k hashing ist nicht mehr wie in PHP 5.3.0 verfügbar.
- Folgende Schlüsselworte sind nun reserviert:
- goto
- namespace
abgekündigt
PHP 5.3.0 führt zwei neue Error Level ein:
- E_DEPRECATED
- E_USER_DEPRECATED
E_DEPRECATED zeigt an, dass eine Funktion oder ein Feature abgekündigt ist.
E_USER_DEPRECATED zeigt dies im Benutzercode an, analog zur Unterscheidung von E_USER_ERROR und E_USER_WARNING.
Folgende INI-Direktiven sind abgekündigt:
- define_syslog_variables (in 5.4.0 entfernt!)
- register_globals (strikt nicht empfohlen, sicherheitsrelevant!)
- register_long_arrays
- safe_mode
- magic_quotes_gpc
- magic_quotes_runtime
- magic_quotes_sybase
Kommentare, die mit einem '#' sind nun in .INI Dateien unerwünscht.
Folgende Funktionen sind abgekündigt:
- call_user_method() (call_user_func() anstelle)
- call_user_method_array() (use call_user_func_array() anstelle)
- define_syslog_variables()
- dl()
- ereg() (preg_match() anstelle)
- ereg_replace() (preg_replace() anstelle)
- eregi() (preg_match() mit dem Modifier 'i' anstelle)
- eregi_replace() (preg_replace() mit dem Modifier 'i' anstelle)
- set_magic_quotes_runtime() und sein Alias magic_quotes_runtime()
- session_register() ($_SESSION superglobal anstelle)
- session_unregister() ($_SESSION superglobal anstelle)
- session_is_registered() ($_SESSION superglobal anstelle)
- set_socket_blocking() (stream_set_blocking() anstelle)
- split() (preg_split() anstelle)
- spliti() (preg_split() mit dem Modifier 'i' anstelle)
- sql_regcase()
- mysql_db_query() (mysql_select_db() und mysql_query() anstelle)
- mysql_escape_string() (mysql_real_escape_string() anstelle)
- Das Weiterreichen von lokalen Kategorienamen als Zeichenketten wird nicht mehr empfohlen. Konstanten der Familie LC_* sollten anstelle dessen verwendet werden.
- Der Parameter is_dst bei mktime(). Verwendung sollten die neuen Funktionen für die Zeitzonenverwaltung finden.
Abgekündigte Features:
- Die Zuweisung des Rückgabewertes von new als Referenzwert sollte nicht eingesetzt werden.
- Call-time als Referenzparameter ebenfalls nicht.
Wieder erlaubt:
- Die Funktion is_a() ist wegen starker Popularität wieder "erlaubt" und erzeugt keinen E_STRICT error mehr.
geändert
(Vgl.: http://www.php.net/manual/de/migration53.incompatible.php)
- In allen mit PHP 5.3.x mitgelieferte Modulen gilt jetzt eine neuere interne Parameter-Parsing-API, die die Funktionen veranlasst, bei der Übergabe inkompatibler Parameter den Wert NULL zurückzuliefern! Es gibt einige Ausnahmen von dieser Regel, so z.B. die Funktion get_class(), die weiterhin bei einem Fehler FALSE zurückliefert.
- clearstatcache() löscht nicht mehr standardmäßig den realpath cache.
- realpath() ist nun vollkommen Plattform unabhängig. Als Konsequenz daraus funktionieren ungültige relative Pfade, wie z.B. __FILE__ . "/../x" nicht mehr
- Die Funktionsfamilie call_user_func() verfügt nn über über $this, selbst wenn der Aufrufer eine Elternklasse ist.
- Die Arrayfunktionen natsort(), natcasesort(), usort(), uasort(), uksort(), array_flip() und array_unique() akzeptieren keine Objekte als Parameter. Zu diesem Zweck müssen die Objekte in ein Array per Typecast angepasst werden.
- Funktionen akzeptieren nicht mehr, dass Paramter, die in der Funktion als By-Reference deklariert sind, als By-Value übergeben werden. Dies erzeugt nun einen fatal error. Als Lösung muss der Übergabewert vorher einer Variable zugeweisen und diese übergeben werden.
- Die neue Bibliothek mysqlnd (anstelle libmysql) erwartet nun die Verwendung des neueren MySQL 4.1 Passwort-Formats (41 Bytes). Die Vewendung des alten (16 Bytes) Formates erzeugt bei mysql_connect() und ähnlichen Funktionen den Fehler: "mysqlnd cannot connect to MySQL 4.1+ using old authentication."
- Die neue Bibliothek mysqlnd (anstelle libmysql) liest nun nicht mehr die MySQL Konfigurationsdateien (my.cnf/my.ini). Sollte der Programmcode von dort vereinbarten Einstellungen abhängen, sind die notwendigen Werte mit der Funktion mysqli_options() explizit zu laden. Das hat weiterhin zur Folge, dass in PDO, dessen MySQL-Unterstützung mit mysqlnd kompiliert wurde, die PDO spezifischen Konstanten PDO::MYSQL_ATTR_READ_DEFAULT_FILE und 'PDO::MYSQL_ATTR_READ_DEFAULT_GROUP undefiniert sind.
- In SplFileInfo und analogen Verzeichnisklassen wurde das "/" am Ende entfernt.
- Die "Magische Methode" __toString akzeptiert keine Argumente mehr.
- Die "Magischen Methoden" __get, __set, __isset, __unset und __call müssen nun immer public und dürfen nicht mehr static sein. Die Angabe der Sichtbarkeit einer Methode ist nun Pflicht.
- Die "Magische Methode" __call wird nun beim Zugriff auf private und protected Methoden aufgerufen.
- Die Funktionen func_get_arg(), func_get_args() und func_num_args() können nun nicht mehr aus dem äußersten Gültigkeitsrahmen einer Datei gerufen werden, die via include() oder require() aus einer Funktion der rufenden Datei eingebunde wurde.
- s2k hashing ist nicht mehr wie in PHP 5.3.0 verfügbar.
- Folgende Schlüsselworte sind nun reserviert:
- goto
- namespace