Zufällig bin ich heute in einem meiner bevorzugten Newsticker über ein Video zum Thema PHP 5.4 gestolpert. Interviewt wurde Johannes Schlüter auf der IPC Spring 2011. Herbei haben mich zwei Neuerungen davon überzeugt, nach dem Release schnellstmöglich produktiv mit PHP 5.4 arbeiten zu wollen, nämlich Traits und das Array-Dereferencing.
Interview(s)
Doch lassen wir Johannes zunächst selbst zu Wort kommen:
Ein weiteres Interview mit schlechterer Audio-Qualität:
Array-Dereferencing
Dieses Feature lässt sich aus meiner Sicht am besten mit einem Beispiel von Web-Union.de erklären:
function getAnyArray() { return array("Apfel", "Birne", "Banane"); } echo getAnyArray()[2]; // Ausgabe: Banane
Weiterführende Informationen findet man im Blog-Artikel zur Alpha 1 von Johannes.
Traits
Bisher war es in PHP nicht möglich Methoden aus mehreren Klassen zu übernehmen, da man nur von einer Eltern-Klasse erben kann. Dies wird zukünftig durch Traits behoben.
trait Helferlein { public function formatiereZeitpunkt() { return strftime('d.m.Y H:i:s', strtotime($this->datum)); } } class A { use Helferlein; public $datum = '2011-11-11 11:11:11'; // ... } class B extends OtherClass { use Helferlein; public $datum = '2009-09-09 09:09:09'; // ... } // Die Methode formatiereZeitpunkt ist nun in beiden Klassen verfügbar $a = new A(); echo $a->formatiereZeitpunkt(); $b = new B(); echo $b->formatiereZeitpunkt();
Das Beispiel macht zwei Sachen deutlich:
- Die Methode kann man in vielen Daten-Klassen brauchen, jedoch nicht in allen. Sie macht also in einer gemeinsamen Eltern-Klasse für alle Daten-Klassen keinen Sinn.
- Ein Zugriff auf das aktuelle Objekt mit $this wird möglich sein.
Weitere Beispiele vor allem bei Methoden-Kollisionen von zwei Traits finden sich in Englisch bei Simas Toleikis. In einem weiteren englischen Beitrag hat sich Giorgio Sironi Gedanken darüber gemacht, wie nützlich die neuen Features sind und wie hoch im Vergleich dazu die Wahrscheinlichkeit eines Missbrauchs ist.
[via PHPmagazin]




Kommentar hinzufügen