Neue PHP-Version unterstützt Namensräume und Lambda-Funktionen
Die Liste wesentlicher neuer Funktionen ist kurz, aber beeindruckend: Namensräume, Lambda-Funktionen und das sogenannte “Late static binding”.
Namensräume kapseln Funktionen und Klassen, wodurch sich Programmierer keine Gedanken mehr machen müssen, ob ein Funktions- oder Klassenname bereits verwendet wird. Sie waren ursprünglich erst für PHP 6 anvisiert. Jedoch schrieben mehrere Entwickler in den letzten Monaten den erforderlichen Code für PHP 5. Mit der Aufnahme des Codes gingen umfangreiche Diskussionen zur erforderlichen Syntax und Verwendung einher, die bislang nur zum Teil abgeschlossen sind. Deshalb ist möglich, dass sich bis zur Finalversion noch Änderungen ergeben.
Ebenfalls neu sind Lambda-Funktionen, auch bekannt als anonyme Funktionen, zum Beispiel in JavaScript. Sie sind reguläres Sprachelement funktionaler Sprachen und werden nicht explizit mit einem Namen deklariert und unter diesem aufgerufen, sondern der Funktionskörper muss einer Variablen zugewiesen werden. Deshalb kann eine Lambda-Funktion auch als Über- oder Rückgabewert einer Funktion übergeben werden.
Zwar erlaubt PHP bereits seit längerem Mittel, Lambda-Funktionen mit create_function() zu simulieren, dies ist aber mit Nachteilen verbunden. Insbesondere ist diese Form von Lambda-Funktionen schwer zu debuggen und kann ein potenzielles Sicherheitsproblem darstellen. Für längere Funktionen ist der Ansatz ebenfalls nicht besonders gut geeignet.
Damit einhergehen Closures. Lambda-Funktionen werden häufig innerhalb einer Funktion oder Methode definiert, aber zumeist nicht darin ausgeführt. Das führt zu Problemen mit der Sichtbarkeit von Variablen innerhalb der Lambda-Funktion. In funktionalen Sprachen sind äußere Variablen standardmäßig innerhalb der Lambda-Funktion sichtbar. In PHP hingegen müssen erforderliche Variablen explizit mit dem neuen Schlüsselwort use in die Lambda-Funktion importiert werden.
Late static binding führt das neue Prefix static:: für Methodenaufrufe ein. Es kann für den statischen Aufruf einer Methode innerhalb einer Klassenmethode verwendet werden, ohne dass der Klassenname bekannt ist. Es reicht, wenn die Methode innerhalb der Klasse definiert oder von einer Klasse geerbt wurde.
Die neue Metamethode für Klassen __callStatic() erlaubt es, statische Aufrufe undefinierter Klassenmethoden abzufangen und auszuwerten, analog zu __call() für Methodenaufrufe auf instanzierte Objekte.
Dass die PHP-Unterstützung für Windows 98, Me und NT eingestellt wird, dürften die meisten Programmierer verschmerzen können, denn PHP wird ab der Version 5.3 nur noch unter Windows-Versionen ab Windows 2000 laufen.
Weitere Alpha- und Betaversionen sollen im Abstand von zwei bis drei Wochen veröffentlicht werden. Die erste stabile Version von PHP 5.3 wurde für den Zeitraum zwischen Mitte September und Mitte Oktober angekündigt.
Quelle:www.golem.de

