Das neue PHP-Release: Hat sich das Warten gelohnt?

PHP 5.3, Teil 5
Kommentare

Erfahren Sie im letzten Teil unserer Serie, welche weiteren Vorteile PHP 5.3 mit sich bringt.

Kaum ein PHP-Release hat so lange auf sich warten lassen wie die Version 5.3. Hat sich das lange Warten gelohnt und wann sollte man umsteigen? Wir sehen uns die
wichtigsten Neuerungen in PHP 5.3 an und ich zeige Ihnen, was man damit machen kann.

 

… und Vieles mehr

Es gibt noch zahlreiche, weitere, interessante und nützliche neue Features in PHP 5.3, die hier aus Platzgründen nur kurz erwähnt werden können. Eine vollständige Darstellung findet sich im title=“PHP 5.3 – die Neuerungen (schnell + kompakt)“ target=“_blank“>PHP 5.3 – die Neuerungen. Die Standard PHP Library (SPL) beispielsweise wurde um einige Datenstrukturen, wie sie aus anderen Programmiersprachen bekannt sind, erweitert. Dazu zählen ein Stapel (SplStack), Warteschlange (SplQueue), Prioritätswarteschlange (SplPriorityQueue) und SplFixedArray, ein Array mit fester Länge. Ein SplFixedArray hat im Gegensatz zum normalen Array in PHP eine vorab im Konstruktor definierte feste Länge, wodurch zur Laufzeit intern Verwaltungsaufwand eingespart wird.

PHP 5.3 ist mit der eingebetteten Datenbank Sqlite3 anstelle von Sqlite2 gebündelt. Sqlite3 bietet einige neue Features wie Unicode-Unterstützung, erweiterte Kapazität durch 64-bit-Identifikationen oder die Möglichkeit, Blobs (binary large objects) zu speichern. Beachten Sie, dass das Datenbankformat von Sqlite2 nicht zu Sqlite3 kompatibel ist. Sie müssen daher einen SQL Dump von vorhandenen Datenbanken erstellen und diesen in eine neu angelegte Sqlite3-Datenbank rücksichern.

Ebenfalls neu in PHP 5.3 ist, dass standardmäßig die intl und fileinfo Extension mit ausgeliefert und aktiviert ist. Die intl-Erweiterung basiert auf der ICU-Bibliothek, die beispielsweise auch in Lotus Notes, Eclipse, dem Mozilla-Projekt, OpenOffice.org oder Java verwendet wird. ICU (International Components for Unicode) unterstützt Konvertierungen zwischen verschiedenen Kodierungen, Kollationen (Informationen darüber, wie Zeichenketten sortiert werden sollen), sowie die Formatierung von Zahlen und mehrsprachigen Texten.

Als Alternative zur „normalen“ MySQL-Clientbibliothek libmysql gibt es in PHP 5.3 mysqlnd, das nativ für PHP entwickelt wurde, um den bisher lizenzrechtlichen Klimmzug abzustellen, bei dem für PHP eine Ausnahme von der infektiösen Natur der GPL gemacht wurde. mysqlnd kann anstelle von libmysql verwendet werden, wenn das beim Konfigurieren des Quellcodes mit configure explizit angegeben wird. mysqlnd unterstützt aber keine MySQL-Server vor der Version 4.1 und (noch) keine Kompression und SSL-Verbindungen zur Datenbank.

Längerlaufende Skripte oder komplexe Anwendungen wie PHPDocumentor und PHPUnit profitieren von der neuen Garbage Collection. Zur Speicherverwaltung zählt PHP jeweils die Referenzen auf ein Objekt und löscht es erst dann aus dem Speicher, wenn sein Referenzzähler Null geworden ist. Das funktioniert in den meisten Fällen sehr gut – wenn aber Objekte zyklische Referenzen haben, versagt dieses Verfahren. Zyklische Referenzen treten oft in Verbindung mit Baumstrukturen auf, wenn etwa ein Elternobjekt eine Referenz auf ein Kindobjekt und dieses eine Referenz auf das Elternobjekt hat. Bisher konnte PHP solche Objekte erst zum Ende der Skriptlaufzeit löschen – durch die neue Garbage Collection, die übrigens standardmäßig aktiviert ist, können Objekte mit zyklischen Referenzen, auf die ansonsten keine Referenz „von außen“ mehr existiert, bereits während der Skriptlaufzeit aus dem Speicher gelöscht werden.

PHP 5.3 bringt auch eine verbesserte Unterstützung für Lambda-Funktionen (anonyme „Wegwerf“-Funktionen) mit. Diese müssen nun nicht mehr mittels function_create() definiert werden, sondern können direkt als „normaler“ Quellcode notiert werden, was nicht nur das Syntax Highlighting im Editor, sondern auch die automatische Syntaxüberprüfung ermöglicht.

Ein weiteres neues Feature, das man im Programmieralltag allerdings nicht unbedingt braucht, sind Closures (Funktionsabschlüsse). Eine Closure ist im Prinzip eine Lambda-Funktion mit einer Bindung an Variablen aus übergeordnetem Wertebereich. Das konserviert gewissermaßen den Zustand der Closure auch über die eigentliche Lebensdauer der gebundenen Variablen hinaus.

Fazit

Interessanter Artikel?

width=“75″ height=“106″ alt=“PHP Magazin 5.09″ />

Gefällt Ihnen dieser Artikel? Dies und mehr ist alles Teil der Ausgabe 5.09 unseres PHP Magazins. Alle zwei Monate frisch am Kiosk! Zur jeweils aktuellen Ausgabe geht es hier.

PHP 5.3 ist mit Sicherheit das beste PHP, das es jemals gab. Dank Late Static Binding können viele Probleme bei der objektorientierten Programmierung eleganter als bisher gelöst werden. Namensräume helfen, Namenskonflikte zu vermeiden und sollten damit auf lange Sicht die nicht wirklich schönen Namenspräfixe ablösen und für kürzere Klassennamen sorgen. Zahlreiche Änderungen „unter der Motorhaube“ sorgen dafür, dass PHP 5.3 das schnellste PHP aller Zeiten ist und durch die verbesserte Qualitätssicherung auch und gerade unter Windows sollte sichergestellt sein, dass der Einsatz von PHP 5.3 keine größeren Probleme mit sich bringt. Eine vollständige Übersicht über die neuen Features in PHP 5.3 bietet das PHP Wiki. Es dürfte sich lohnen, zumindest auf Entwicklungssystemen möglichst bald PHP 5.3 einzusetzen, um von den zahlreichen neuen Features zu profitieren.

Stefan Priebsch Dipl. Inform. Stefan Priebsch ist Mitgründer und Principal Consultant bei thePHP.cc und Autor mehrerer Fachbücher, darunter auch target=“_blank“>PHP 5.3 – Die Neuerungen, das im entwickler.press-Verlag erscheint.

 
Das ist neu in PHP 5.3
  1. Neue und verbesserte Funktionen
  2. Verbesserte Windows-Unterstützung & Late Static Binding
  3. Namespaces
  4. Phar
  5. … und Vieles mehr
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -