PHP 7: Neue Funktionen

Fehler abfangen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Fast alle Fatal Errors der Engine können jetzt abgefangen werden. Neu ist auch die Hierarchie: Exception und Error haben beide das Interface Throwable implementiert.

Transkript

Die Behandlung von fatalen Fehlern hat eine entscheidende Änderung in PHP 7 erfahren. Sehen wir uns ein Beispiel an und führen es dann zuerst einmal unter PHP 5.6 aus und dann unter PHP 7. Was habe ich hier? Es gibt eine Klasse und in dieser Klasse gibt es eine Konstruktor- und eine Destruktor-Methode. Dann gibt es einen "try-catch-finally"-Block. In dem "try"-Block lege ich eine neues Objekt an. Und dann kommt das Entscheidende in Zeile 15: Ich rufe eine Funktion auf, die es nicht gibt. Dann fange ich irgendwelche Exceptions ab und es gibt einen "finally"-Block. Wenn wir dieses Beispiel einmal unter PHP 5.6 ausführen, dann sehen Sie das Ergebnis. Was bedeutet das? Also, wir haben einen fatalen Fehler und es ist auch nur der Konstruktor aufgerufen, nicht der Destruktor und auch nicht der "finally"-Block. Schauen wir uns an, was passiert, wenn wir dieses selbe Beispiel unter PHP 7 ausführen. Erste Auffälligkeit ist, dass Finally aufgerufen wird, diese Meldung erscheint. Und bei dem fatalen Fehler kommt jetzt "Uncaught Error", das heißt, wir können diesen Fehler auch abfangen. Wie funktioniert das? Die Exception fängt es nicht ab, weil es nicht vom Typ "Exception" ist, sondern vom Typ "Error", das heißt, wir brauchen zwei "catch"-Blöcke, einen normal für die Exception und einen weiteren für den Error. Und wenn wir dieses Beispiel einmal ausführen, dann sehen Sie, haben wir diesen Fehler abgefangen, "finally" wird aufgerufen und unser Destruktor wird ebenfalls aufgerufen. Das ist die empfohlene Methode, die Sie hier sehen, dass Sie einen "catch"-Block haben mit Exception, einen "catch"-Block mit Error. Sie können stattdessen aber auch direkt für beide das neue Interface "Throwable" nutzen. Wenn ich dieses Beispiel ausführe, so funktioniert es genauso wie eben auch. Wie sieht die Hierarchie aus? Also, es gibt ein Interface "Throwable" und sowohl Exception als auch Error implementieren dieses Interface. Beim Error gibt es verschiedene Typen. Der "TypeError" gilt beispielsweise, wenn Sie im strikten Modus bei Ihren Methoden und Funktionen den Datentyp vorgeben. Der "ParseError" kann passieren, wenn Sie eine externe Datei einbinden, die einen Fehler beinhaltet. Dann kann es noch arithmetische Fehler geben oder "AssertionError". Diese gelten, wenn eine bei Assert gesetzte Bedingung nicht zutrifft. Schauen wir uns dann einmal die Methoden dieses neuen Interfaces an und dann sehen Sie, gibt es eben "getMessage", "getCode", "getFile", worüber Sie genau feststellen können, wo das Problem auftrat. Sie haben gesehen, dass Sie mit PHP 7 Fehler abfangen können. Dafür gibt es die neue Klasse "Error", die das Interface "Throwable" implementiert. Sie können entweder zum Abfangen direkt das Throwable-Interface nehmen. Die empfohlene Art ist, dass Sie zuerst die Exception abfangen und dann den Fehler.

PHP 7: Neue Funktionen

Sehen und nutzen Sie die vielen Neuerungen in PHP 7 und 7.1, wie zum Beispiel die skalaren Typdefinitionen und Return Type-Deklarationen und zwei neue Operatoren: den null coalescing operator und den spaceship-Operator.

45 min (18 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!