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
Testbericht

Kostenlose RIA-Entwicklung: Mit Java FX tritt Sun in direkte Konkurrenz zu Flash und Silverlight.
Einzeltest: PHP Excel
Testbericht

Häufig werden MySQL-Daten im Excel-Format benötigt. Mit PHP Excel erstellen Sie solche Dateien via PHP.
Testbericht

Angesichts der tiefgreifenden Neuerungen hätte Ruby on Rails eigentlich die Versionsnummer 3.0 verdient.
Einzeltest: Cronjob-Service
Testbericht

Cronjob-Service von Selfphp erleichtert Administratoren die mühselige Pflege von Crontab-Dateien.
Einzeltest: Silverlight 3 Beta
Testbericht

Langsam kommt Silverlight ins Rollen. Version 3 ermöglicht unter anderem die Wiedergabe von Web-Videos.