Hilfe:PHP und Unterschiede in den Versionen: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(neu) |
(→PHP 5.3: geändert) |
||
| Zeile 16: | Zeile 16: | ||
* [http://php.net/manual/de/migration53.php Changelog 5.2 -> 5.3 (engl.)] | * [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 Namensräume (namespaces) | ||
* Unterstützung für Späte Statische Bindung (Late Static Bindings) | * Unterstützung für Späte Statische Bindung (Late Static Bindings) | ||
| Zeile 37: | Zeile 39: | ||
==== abgekündigt ==== | ==== abgekündigt ==== | ||
==== 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 ==== | ||
Version vom 2. April 2012, 15:05 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
entfernt
abgekündigt
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