Update: Skepsis zum "finally"-Keyword in PHP 5.5
Kommentare

Die Mehrheit der stimmberechtigten PHP-Core-Mitglieder ist für das Exception-Keyword „finally“ in PHP 5.5. Doch unter den vier Gegenstimmen befindet sich Nikita Popov, der seine Bedenken in den Internals

Die Mehrheit der stimmberechtigten PHP-Core-Mitglieder ist für das Exception-Keyword „finally“ in PHP 5.5. Doch unter den vier Gegenstimmen befindet sich Nikita Popov, der seine Bedenken in den Internals zu verstehen gab (sinngemäß übersetzt):

Ich denke auch, dass PHP das Modell übernehmen sollte (da es dem Programmierer mehr Kontrolle gibt), doch bis alle schwerwiegenden Aktionen in Exceptions ungestaltet wurden, bin ich gegen die Einführung von „finally“.

Denn mit dem finally-Keyword wird versprochen, dass der Code dahinter in jedem Fall ausgeführt wird. die(), Parse Errors, Fatal Errors oder Abbrüche durch den Benutzer dürfen dies auch nicht verhindern. Ansonsten kann das Versprechen von finally nicht gehalten werden, dass es Ressourcen wieder freigibt.

Außerdem bezweifelt Popov, dass finally wirklich notwendig ist, um seine Hauptaufgabe auszuführen: Cleanups führt PHP aufgrund seiner Refcount-basierten Garbage Collection ohnehin aus. Sobald Dateien nicht mehr im Scope sind, werden sie automatisch geschlossen und freigegeben. Für Datenbank-Handles gilt dasselbe.

Original Nachricht: PHP 5.5: Exceptions bald mit „finally“-Keyword?

Aktuellen Voting-Ergebnissen der stimmberechtigten PHP-Core-Entwickler zufolge wird PHP 5.5 das finally-Keyword unterstützen. Der sieben Jahre alte RFC von Xinchen Hui wurde wiederaufgegriffen: Erste Patches können schon jetzt PHP um das finally-Keyword im Exception Handling erweitern. Damit lässt sich ein Cleanup-Prozess einleiten, falls eine unerwartete Exception eintritt. Bislang sind solche Fälle nur mit unschönem Mehraufwand für Entwickler zu lösen.

Der erste RFC zum finally-Keyword datiert zurück auf den 25. Februar 2005. Dem Autoren ging es vor allem um eine simplere Lösung, Tabellen zu entsperren, nachdem eine Exception geworfen wurde. Die Emulation des finally-Keywords mit einem try/catch-Block sorgt für Code-Redundanz und Inkonsistenz.

Den aktuellen RFC findet Ihr im PHP-Wiki. Dort liegen auch Links zum Patch auf GitHub bereit. Anwendungsszenarien zeigt Sherif Ramadan auf Sherif’s Tech Blog.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -