Das Voting war eindeutig – das Throwable Interface wir Teil von PHP 7

PHP-RFC: Throwable Interface in PHP 7
Kommentare

Mit PHP 7 wird ein neues Konzept eingeführt: Fatal Errors der Engine können künftig als Exceptions abgefangen werden. Was generell wie eine gute Idee klingt, hat dennoch einige Nachteile, die Aaron Piotrowski mit einem RFC auflösen wollte. Jetzt ist das Throwable Interface im Voting angenommen und wird seinen Weg in das finale Release von PHP 7 finden.

Wie Piotrowski in seinem RFC Throwable Interface beschreibt, gibt es mit dem in PHP 7 eingeführten Konzept der Exceptions in der Engine ein kleines aber feines Problem:

These exceptions do not extend Exception, but instead extend a new class BaseException and are named EngineException, TypeException, and ParseException. These classes have a naming scheme that is unintuitive and will lead to confusion, especially for newer users.

Throwable Interface tot he rescue!

Das Problem ergibt sich, wenn man versucht, eine TypeException, die bei einem fehlgeschlagenen Matching von Type-Hints auftreten, abfangen möchte. Genau das sei aber wenig einleuchtend, wie Piotrowski zu bedenken gibt, da das Exception in TypeException darauf schließen lasse, dass TypeException auf Exception aufsetze – und nicht auf BaseException.

Sein Vorschlag war es daher, die Exception-Hierarchie in PHP 7 zu ändern. Der Aufbau wäre dann wie folgt:

  • Interface Throwable
    • Exception implementiert Throwable
    • Error implementiert Throwable, und nicht wie bisher EngineException
      • TypeError erweitert Error
      • ParseError erweitert Error

Als Basis für seinen Vorschlag diente der Throwable-Pull-Request von Sebastian Bergmann; eine vollständige Implementierung existiert ebenfalls bereits.

Throw ALL the things!

Im Throwable-Interface sind zahlreiche Methoden spezifiziert, die in der Lage sind, das gewünsche Verhalten zu liefern: getMessage(), getCode(), getFile(), getLine(), getTrace(), getTraceAsString() sowie __toString().

Das Voting für den RFC war bis zum 17. Juni geöffnet und wurde einstimmig angenommen. Das Throwable Interface ist somit Teil von PHP 7.

PHP 7

Der 11. Juni 2015 markierte den Beginn einer neuen Ära für die PHP-Community, denn an diesem Tag wurde die erste offizielle Alpha-Version von PHP 7 veröffentlicht. Mit an Bord sind all die Änderungen, welche die Community seit langem beschäftigen: vom Spaceship Operator, dem Coalesce Operator, skalaren Type Declarations – ein Bereich, in dem es in der Vergangenheit immer wieder viel Diskussion gab –, anonyme Klassen, ein durchgängiger Support für 64-Bit-Systeme und vieles mehr.

Das Herzstück in PHP 7 bildet die neue Engine, die selbst im Vergleich zur HHVM für deutlich mehr Performance sorgen soll. In der Ankündigung ist sogar die Rede von einer Performance-Steigerung von bis zu 100 Prozent im Vergleich zu PHP 5.6.

Wer erste Schritte auf der neuen Version wagen möchte, dem sei die Upgrade-Anleitung ans Herz gelegt; die korrekte Funktionalität der Anwendungen auf PHP 7 lässt sich im Handumdrehen mit Travis CI testen.

Nun heißt es, PHP 7.0.0 Alpha 1 für Windows– oder die üblichen Systeme herunterzuladen und seine Applikationen darauf zu testen – und natürlich, den zum Teil enormen Performance-Boost zu genießen. Außerdem darf man sichfür das finale Release natürlich auf das neue Throwable Interface freuen.

Aufmacherbild: cartoon man throwing dart von Shutterstock / Urheberrecht: shockfactor.de

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -