Hilfe:PHP und Unterschiede in den Versionen

aus GenWiki, dem genealogischen Lexikon zum Mitmachen.
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

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