KingCrunchs kleine Welt

Gedanken über PHP und was mich sonst bewegt…

PHP 5.4 entwickelt sich

| 2 Kommentare

Man könnte den Einleitungssatz aus meinem alten Beitrag “PHP 5.3 entwickelt sich” nahezu eins-zu-eins übernehmen, denn auch diesmal vergingen vom Release von PHP 5.3 bis zum Release von PHP 5.4-alpha1 fast exakt 2 Jahre (2 Tage daneben ;)). Aber in Zukunft soll dann alles besser werden, das legt zumindest der RFC zum Releaseprozess nahe. Egal welche Variante man dort betrachtet, jede sieht eine neue x.y+1.0-Version pro Jahr vor (und gemeint ist damit tatsächlich der Stable-Release). Die Gesamtliste über die Änderungen enthält viel, wobei vieles die üblichen kleineren Änderungen sind. Ich werde das etwas raffen und zwar auf die Dinge, bei den ich denke, dass sie interessant sind ;) Ausser der Reihe interessant ist, dass es einige Performance-Optimierungen von einem Fork in den Core geschafft haben.

Dieser Artikel bezieht sich ausschließlich auf die alpha1, aber auch diesmal gibt es neben der Liste der bereits integrierten Änderungen noch eine offizielle TODO. In der Warteliste steht noch so manches Schmankerl, aber dazu wenns es soweit ist.

Neuheiten

Die y+1-Versionen bringen auch gerne neue Features mit. Diesmal: Traits. So ohne Beispiel ist es nicht ganz einfach zu erklären, aber ich wollte dem noch einen eigene Beitrag gönnen, deshalb jetzt nur der stümperhafte Versuch es kurz: Die gängiste Erläuterung ist, dass das Einbinden von Traits in Klassen wie ein automatisches “Copy&Paste” funktioniert. Die in den Traits definierten und implementierten Methoden werden direkt der die Trait integrierende Klasse zugeordet. Wie das im Detail aussieht, muss ich selbst erst einmal heraus finden, denn zwischenzeitlich bin ich auf zwei Beschreibungen gestoßen. Die aktuelle Implementierung (und Diskussion) deutet auch mehr darauf hin, dass es sich um Mixins, anstatt um Traits handelt. Ob diese Differenzierung nun akademischer Natur, oder tatsächlich für den Endanwender wichtig ist, lass ich mal offen. Es könnte aber noch zu einer Umbenennung kommen.

Altlasten

In der Kurzfassung: Safe Mode (inklusive “all related ini options”), register_globals, register_long_arrays und allow_call_time_pass_reference, ebenso wie import_request_variables() entfallen ersatzlos. Die Diskussion darüber zog sich meines Erachtens auch schon lange genug hin. Auch eine interessante Notation, bei der break und continue mit Variable verwendet werden konnten, wird abgeschafft

for ($i = 0; $i < 100; $i++) {
    if ($i <> $x) continue $var;
    break $var;
}

Ich selbst war etwas überrascht, denn bisher war mir nicht mal bekannt, dass das geht, was aber auch keinen Unterschied, denn mir fällt immer noch und weiterhin kein sinnvoller Anwendungsfall dafür ein. Nicht gemeint ist übrigens die normale Notation mit festen Werten a la break 2;.

… und so generell

Und natürlich gibts viel Kleines, dass aber das Leben schön einfach machen kann:

  • Closures bekommen ihre Fähigkeit zurück (es gab es bereits in einer Vor-Version von 5.3, wurde aber zum Release entfernt) $this “aufzunehmen”.
    function () use ($this) {}
  • Es wird nicht mehr notwendig sein Arrays einer Variable zuzuweisen, um auf deren Werte zuzugreifen
    echo $obj->fetchArray()[0];

    das erspart einige, sinnlos anmutende Variablen.

  • Ähnliches gilt für Callables, denn wo Closures, Funktionsnamen-als-Strings und “callable classes” (Klassen, die __invoke() implementieren) schon immer direkt via $var(); aufrufbar waren, galt dies bisher nicht allgemein für Klassen und Objekte in der Array-Notation.
    $array = array($obj, 'method');
    $array();
    $array = array('classname', 'method');
    $array();

    Damit dürfte der Sack voll sein und call_user_func() nutzlos.

  • http_response_code(), weil die Verwendung von header() nur um den Response-Code zu setzen immer schon etwas merkwürdig wirkte.
  • Die gemäß Tokens T_OPEN_TAG_ECHO genannte Notation <?= ?>, die short-open-tags mit echo verbindet, ist fest aktiviert. Find ich vorallem schön, da es damit eine weitere Option weniger zu berücksichtigen gibt.

Falls ich jetzt noch etwas Wichtiges (für die alpha1) vergessen habe, wäre ich für einen kleinen Hinweis dankbar. Ansonsten denke ich schonmal über

2 Kommentare

  1. Traits kommen also wirklich? Spannende Sache.

Kommentar verfassen

Bad Behavior has blocked 695 access attempts in the last 7 days.

Page optimized by WP Minify WordPress Plugin

%d Bloggern gefällt das: