Die Spezifikation, kurioses aus dem PHP-Core und ein RFC
Kommentare

Ende Juli hatte Sara Golemon angekündigt, dass Facebook an einer Spezifikation für PHP arbeite – was im ersten Moment natürlich von einigen als Affront gegen das PHP-Core-Team aufgefasst wurde.

Ein kurioses Verhalten des switch-Statements und der damit verbundene RFC, der seit gestern zur Abstimmung steht, zeigt allerdings, dass es sich dabei um eine durchaus sinnvolle Entwicklung handelt.

switch und multiple default-Blöcke

Ausschlaggebend für die Erstellung des RFC war der Bug #67757 – multiple default cases. Darin wird darauf hingewiesen, dass in einem switch-Statement mehrere default-Fälle vorkommen könnten; und das wiederspräche natürlich der bereits genannten Spezifikation. Das bedeutet im Klartext, dass folgender Code von PHP problemlos ausgeführt wird:

switch($expr) {
  default:
    doSomething();
    break;
  default:
    doSomethingCompletelyDifferent();
}

Laut PHP-Spezifikation wäre das ein Syntax-Fehler – wie bereits erwähnt führt PHP diesen Code aber problemlos aus.

Ein RFC, es zu richten

Im PHP RFC: Make defining multiple default cases in a switch a syntax error stellt Golemon nun zwei mögliche Lösungsansätze zur Diskussion:

We have the choice of either fixing the spec to match PHP’s behavior, or fixing PHP to treat multiple defaults as a bad idea.

Sie selbst bevorzugt letztere Variante, bei der PHP bei einem solchen Konstrukt einen E_COMPILE_ERROR auswerfen würde. Ein Patch, der übrigens bereits in die HipHop Virtual Machine eingeflossen ist.

Bruch mit der Abwärtskompatibilität?

Wie nicht anders zu erwarten sieht es so aus, als würde man sich im Core-Team ohne Gegenstimmen dafür entscheiden, künftig – womöglich schon bei einem kommenden Update – bei mehreren default-Blöcken in switch-Statements einen Syntax Error auszugeben.

Und das, obwohl es durchaus möglich ist, dass solcher Code existiert. Was allerdings ohnehin fernab jeglicher Best Practices wäre – ein Bruch mit der Abwärtskompatibilität ist also durchaus zu verkraften.

Diskussionen um die PHP-Spezifikation

Wie bereits erwähnt, hatte der Vorstoß Facebooks für einigen Zündstoff gesorgt. Etwas Entspannung kam erst auf, als klargestellt wurde, dass Facebook nichts weiter als ein Entwurfspapier einer PHP-Spezifikation vorstellen würde – geschrieben von einem erfahrenen Verfasser von Specs, der sensibel auch auf kleinste Details achten würde. Und die gibt es in PHP schließlich zur Genüge.

Aktuell ist noch nicht wirklich abzusehen, ob die PHP-Spezifikation lediglich zu einer Art Dokumentation verkommt, in der der Status der PHP-Implementierung nachgezeichnet wird, oder ob es doch so weit kommen wird, dass in gemeinschaftlicher Arbeit neue Features spezifiziert werden, die dann vom Core-Team umgesetzt werden.

Die Zeit wird zeigen müssen, was es letzten Endes wird. Die Sache mit dem switch-Statement hat jedoch gezeigt, dass die PHP-Spezifikation generell erst einmal gut angenommen wird.

Aufmacherbild: Modern light switch on a blue wall von Shutterstock / Urheberrecht: doomu

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -