Hilfe:PHP und Unterschiede in den Versionen: Unterschied zwischen den Versionen

aus GenWiki, dem genealogischen Lexikon zum Mitmachen.
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(→‎neu: .)
 
(8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 5: Zeile 5:




 
== Zum Selberlesen ==
* [http://de.php.net/ PHP.net (meist engl.)]
== PHP 5 ==
== PHP 5 ==
=== PHP 5.4 ===
=== PHP 5.4 ===
Zeile 13: Zeile 14:
==== geändert ====
==== geändert ====
=== PHP 5.3 ===
=== PHP 5.3 ===
* [http://php.net/manual/de/migration53.php Changelog 5.2 -> 5.3 (engl.)]
==== neu ====
==== 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.
[http://www.php.net/manual/de/migration53.functions.php Neue Funktionen] werden bereitgestellt.
[http://www.php.net/manual/de/migration53.methods.php Neue Klassenmethoden] werden bereitgestellt.
==== entfernt ====
==== entfernt ====
* s2k hashing ist nicht mehr wie in PHP 5.3.0 verfügbar.
* Folgende Schlüsselworte sind nun reserviert:
** goto
** namespace
==== abgekündigt ====
==== 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 ====
==== 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
=== PHP 5.2 ===
=== PHP 5.2 ===
==== neu ====
==== neu ====

Aktuelle Version vom 2. April 2012, 15:33 Uhr

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

PHP 5.2

neu

entfernt

abgekündigt

geändert

PHP 5.1

neu

entfernt

abgekündigt

geändert

PHP 5.0

neu

entfernt

abgekündigt

geändert

PHP 4

PHP 4.4

neu

entfernt

abgekündigt

geändert

PHP 4.3

neu

entfernt

abgekündigt

geändert

PHP 4.2

neu

entfernt

abgekündigt

geändert

PHP 4.1

neu

entfernt

abgekündigt

geändert

PHP 4.0

neu

entfernt

abgekündigt

geändert