Testbericht

PHP 5.3 Beta im Test

Neue Funktionen erleichtern das objektorientierte Programmieren und beschleunigen MySQL.

Seitdem PHP objektorientierte Programmierung ermöglicht, werden viele Funktionen über Klassen aufgerufen. Namenskollisionen sind aber dennoch möglich. Mit PHP 5.3 soll das der Vergangenheit angehören.

Das neue Keyword namespace erlaubt die Definition von Namensräumen, zum Beispiel namespace MeinKunde::Forum;. Innerhalb dieser Namensräume definieren Sie dann je eine Klasse Benutzer{}, die nicht miteinander kollidieren.

Damit ist aber noch nicht viel gewonnen, denn ob das Kind nun MeinKunde_Forum_Benutzer oder MeinKunde::Forum::Benutzer heißt, ist egal. Erst mit use führen Namensräume zu effizienterem Code:

Über einen Alias können Sie im selben Skript gezielt auf einzelne Klassen aus verschiedenen Namespaces zugreifen:

use MeinKunde::Shop::Benutzer as
ShopBenutzer;
use MeinKunde::Blog::Benutzer as
BlogBenutzer;
$shopbenutzer = new ShopBenutzer();

Sogar Konstanten lassen sich auf Klassenebene definieren, nicht aber importieren. Auch wer sich noch nicht für das objektorientierte Programmieren erwärmen konnte, profitiert von Namensräumen:

<?php
namespace werkzeugkasten;
function FormatiereZeit() {};<?php
require ('werkzeugkasten.class.php');
werkzeugkasten::FormatiereZeit();

Gäbe es noch eine globale Funktion gleichen Namens, dann würde man sie über den durch zwei vorangestellte Doppelpunkte gekennzeichneten, globalen Namensraum ::FormatiereZeit(); aufrufen.

Sogar die Funktion __autoload() lässt sich bereits sinnvoll mit dem neuen Feature einsetzen. Ihr wird der volle Namensraum übergeben, sodass Sie ihn mit ein paar String-Operationen in einen Verzeichnispfad wandeln. Problematisch ist die Umstellung älteren Codes, wenn Funktions- und Klassennamen auf reservierte Begriffe enden.

Besser spät als nie

Mit der Möglichkeit, Late Static Bindings (LSB) zu definieren, behebt 5.3 ein weiteres Problem, das Gergely Hodicska in seinem Blog () beschreibt:

class A {
public static function who() {
echo __CLASS__;
}
public static function test() {
self::who();
}
}
class B extends A {
public static function who() {
echo __CLASS__;
}
}
B::test(); // Ausgabe: "A"

Das heißt, die Funktion who() wird im Kontext der Klasse A ausgeführt, selbst wenn man sie über den Namespace B aufruft. Das können Sie künftig über eine LSB verhindern, die über das Keyword static erzeugt wird:

public static function test() {
static::who();
}

Über die neue Funktion get_called_class() lässt sich zudem he-rausfinden, welche Klasse ursprünglich aufgerufen wurde. Wie sich das zum Beispiel für Prototype Based Programming einsetzen lässt, zeigt der unter veröffentlichte Code.

MySQL

PHP 5.3 bringt einen nativen Treiber für MySQL namens mysqlnd mit. Anders als das dadurch abgelöste libmysql ist der neue Treiber für die Zend Engine optimiert, was vor allem für schnellere Ausführung und geringeren RAM-Verbrauch sorgt. Damit eröffnen sich neue Funktionen, unter anderem Bottleneck-Analysen, Zugriff auf die PHP-Stream-API und clientseitiges Caching.

PHP 5.3 Beta

PHP 5.3 Beta PHP

Open Source

www.php.net

Weitere Details

Fazit:Neue Funktionen erleichtern das objektorientierte Programmieren und beschleunigen MySQL.

4/5
gut

Viele Funktionen waren erst für PHP 6 geplant, wurden nun aber schon auf 5.3 zurückportiert. Hosting-Anbieter dürften den großen Sprung zur Version 6 erst mit Vorliegen der 6.1 wagen. Der Zwischenschritt auf 5.3 lässt sich leichter bewältigen und wird auch entwicklerseitig für einen harmonischeren Umstieg auf 6.x sorgen.

Mehr zum Thema

Einzeltest: Silverlight 3 Beta
Testbericht

Langsam kommt Silverlight ins Rollen. Version 3 ermöglicht unter anderem die Wiedergabe von Web-Videos.
Kurztest Software 03/10 (4)
Testbericht

List & Label ist ein ausgereiftes Hilfswerkzeug für Programmierer, mit dem sich komponentenbasiert Berichte im attraktiven Layout gestalten,…
combit List & Label 16
Testbericht

Der Reportgenerator List & Label 16 erlaubt neben dem lokalen auch das Web Reporting. Das Produkt bietet einen leistungsfähigen, integrierten…
combit List & Label 17
Testbericht

Um die Datenaufbereitung zu vereinfachen, setzten Entwickler Reportgeneratoren wie List & Label 17 für Anwendungen und das Web ein.
Visual Studio 2012
Testbericht

PC Magazin hat den Release Candidate von Visual Studio 2012 im Test.