Das sind die neuen Features von PHP 5.4
Mit der Todo Liste der Entwickler in der Hand haben wir uns die neuen Features von PHP 5.4 angesehen. Was bereits umgesetzt ist und welche zentralen Dinge noch fehlen, lest ihr hier.
Auf der Habenseite verbuchen wir:
Traits
PHP unterstützt für Objektorientierte Programmierung direkte Vererbung. Eine Klasse erbt von genau einer Oberklasse, eine Vererbung aus mehreren Quellen kann nicht erfolgen. Das führt im Zweifel wieder zu Codeduplizierung, was man mit der Objektorientierung prinzipiell zu verringern versucht. Über Traits lassen sich Codeteile in einer Klasse aus mehreren Quellen beziehen (das Beispiel liefert die Ausgabe 112):
trait A { public static function abc(){ echo 1; } } trait B { public static function def(){ echo 2; } } class X { use A; } class Y { use A; use B; } X::abc(); Y::abc(); Y::def();
Array Dereferencing
Was für Objekte schon länger funktioniert, kommt nun auch für Arrays. Gibt eine Methode ein Array zurück, lässt sich der Methodenaufruf mit einer Feldselektion vereinen - eine einfache Form des Syntax Chaining (das Beispiel gibt den buchstaben c aus):
function func() { return array('a', 'b', 'c'); } echo func()[2];
Traversable MySQLi Resultsets
Die Klasse MySQLi Result implementiert nun das Interface Traversable. Praktischer Inhalt dieses technischen Einzeilers ist, dass man das Ergebnis einer MySQLi Abfrage direkt mit foreach durchlaufen kann:
$m = new mysqli('localhost', 'user', 'pass', 'datenbank'); if($result = $m->query("SELECT * FROM tabelle;")){ foreach($result as $row){ print_r($row); } $result->close(); } $m->close();
Auf der Sollseite steht allerdings auch noch einiges, was für für den künftigen Entwicklungsstand erwarten - immerhin gibt es bislang nur die Alphaversionen:
Instance Method calling:
https://wiki.php.net/rfc/instance-method-call
Session Handler Class:
https://wiki.php.net/rfc/session-oo
Built-in Web Server - PHP ohne Apache:
https://wiki.php.net/rfc/builtinwebserver
Natürlich ist das nicht alles, was die Entwickler in den PHP 5.3 Nachfolger einbauen wollen. Die Liste ist lang und wer Interesse an den umgesetzten Details hat, findet das aktuelle Changelog unter NEWS auf php.net. Die Todo Liste findet sich im Wiki.

Juli 6th, 2011
Zu “Traversable MySQLi Resultsets”,
es ist schon nice, kein Frage. Aber man kann das genau so gut mit einer eigenen Klasse machen die das Iterator Interface nutzt und der man das resultset gibt, ganz neben bei kann man dann in der current schon Objekte erstellen und diese zurück geben lassen
Tobias