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

aus GenWiki, dem genealogischen Lexikon zum Mitmachen.
Zur Navigation springen Zur Suche springen
(→‎neu: .)
Zeile 35: Zeile 35:
* Ein Aufräumjob (garbage collector) für zirkuläre Referenzen ist neu und standardmäßig aktiv
* 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
* 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.


==== entfernt ====
==== entfernt ====

Version vom 2. April 2012, 15:31 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.

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