


Beispiele zur Erläuterung, wie PHP Fehler und Ausnahmen im Yii-Framework behandelt
Yii hat standardmäßig die Ausnahme- und Fehlerübernahme für CApplication implementiert, die über set_Exception_handler und set_error_handler von PHP implementiert wird. Durch diese beiden in PHP integrierten Funktionen können nicht abgefangene Ausnahmen und Fehler im Programm übernommen werden, wodurch die Wartbarkeit des Programms verbessert wird.
Standardmäßig weist Yii die Ausnahmebehandlung CApplication::handleException und die Fehlerbehandlung CApplication::handleError zu. Sie können die Verwendung von Yii jedoch deaktivieren, indem Sie die beiden Konstanten YII_ENABLE_EXCEPTION_HANDLER und YII_ENABLE_ERROR_HANDLER in der Eintragsdatei als falsch definieren. Ausnahme- und Fehlerbehandlungsmechanismus.
Im Folgenden werden Ausnahmen und Fehler zusammenfassend als Fehler bezeichnet und bei Bedarf detailliert unterschieden. Die YII_DEBUG-Konstante (Standard ist false, kann in der Eintragsdatei festgelegt werden) hat einen sehr wichtigen Einfluss auf die Anzeige von Fehlerinformationen. Im Debug-Modus ist die Fehlerausgabe am detailliertesten. Sobald das Programm in Betrieb genommen wird, sollte YII_DEBUG auf false geändert werden.
Unabhängig davon, ob es sich im Debug-Modus befindet oder nicht, werden die relevanten Fehlerinformationen aufgezeichnet, wenn das Yii-Programm einen Fehler generiert (die Fehlerebene ist Fehler und die Standardkategorie ist Anwendung). Der Unterschied besteht darin, dass im Debug-Modus detaillierte Informationen direkt auf der Webseite angezeigt werden.
CApplication:: handleError($code,$message,$file,$line)
Die obige Methode implementiert die relevante Logik. Achten Sie besonders auf die Funktionen „restore_error_handler“ und „restore_Exception_handler“. Wenn diese beiden Funktionen nicht aufgerufen werden, wird CApplication:: handleError während des nachfolgenden Fehlerbehandlungsprozesses erneut aufgerufen, was zu einer Endlosschleife führen kann. Daher verbietet Yii vorübergehend die Verwendung von CApplication::handleError zur Übernahme nachfolgender Fehler und Ausnahmen (unter Verwendung des standardmäßigen Fehlerbehandlungsmechanismus von PHP), wodurch sichergestellt wird, dass keine Schleifenaufrufe auftreten.
PHP-Fehlerbehandlung Welche Informationen zeichnet PHP im Protokoll auf, wenn ein Fehler auftritt? Fehlercode (d. h. PHPs E_ERROR E_WARNING E_STRICT E_DEPRECATED) Nachrichteninhalt (z. B. Undefinierte Variable $input) Der Dateipfad, der den Fehler generiert hat. Die Zeilennummer, die den Fehler generiert hat. Zusätzliche Tracking-Backtrace-Informationen (dies wird durch debug_backtrace erreicht). Die aktuelle URL
Zusätzlich zur Protokollierung der entsprechenden Protokollierung führt Yii auch eine nachfolgende Verarbeitung von Fehlern durch (z. B. Unterbrechung der Ausführung, Anzeige von Fehlerseiten usw.). Standardmäßig wird die Fehlerbehandlung an die Komponente CErrorHandler übergeben (Fehler können jedoch auftreten). Dies kann durch die Bindung des onError-Ereignishandlers an CApplicaton realisiert werden. Sekundäre Übernahme der Verarbeitung, hier ist das Design flexibel.
Zu diesem Zeitpunkt wird ein CErrorEvent generiert (und enthält mehrere Schlüsselparameter wie $code, $message, $file und $line) und zur Verarbeitung an die CErrorHandler-Komponente übergeben. Insbesondere wird es von CErrorHandler::handleError behandelt. Dieser Prozess dient hauptsächlich dazu, fehlerbezogene Informationen zu organisieren und auf geeignete Weise anzuzeigen.
Ob es sich im Debug-Modus befindet (YII_DEBUG==true), hat einen großen Einfluss auf die Anzeige von Fehlermeldungen. Im Debug-Modus möchten wir detaillierte Fehlerverfolgungsinformationen anzeigen, während wir im Produktionsmodus eine benutzerfreundliche Seite anzeigen möchten. Daher ist die Fehleranzeige hier unterschiedlich und die Unterschiede werden im Folgenden erläutert.
Im Debug-Modus wird die Ausnahmeansicht direkt gerendert, um Fehler anzuzeigen. Es wird nach dem folgenden Pfad gesucht:
protected/views/system/Exception.php
YII_PATH/views/Exception.php
Offensichtlich ist das Verzeichnis „views/system“ in der Anwendung nicht standardmäßig definiert, daher ist das Verzeichnis „views/system“ nicht standardmäßig in der Anwendung definiert Es wird das System-Framework verwendet. Wird mit Ansichtsdateien geliefert. Die endgültige eingebundene Datei ist „views/Exception.php“ aus dem Yii-Framework.
Aus der obigen Analyse können wir erkennen, dass wir die Datei protected/views/system/Exception.php konfigurieren müssen, wenn wir eine benutzerdefinierte Ausnahmeseite im Debugging-Modus verwenden möchten (im Allgemeinen macht dies möglicherweise nicht viel Sinn). welche verwendet werden können Die Variable ist $data.
Im Nicht-Debugging-Modus wird die folgende Verarbeitung durchgeführt:
Wenn die errorAction-Routing-Informationen für die errorHandler-Komponente in der Konfigurationsdatei definiert sind, führen Sie sie direkt aus, andernfalls führen Sie den Schritt 2-Prozess aus.
Versuchen Sie, die Fehleransicht zu laden, suchen Sie nach dem folgenden Pfad (die erste durchsuchte Datei wird verwendet)
protected/views/system/zh_cn/error500.php
protected/views/system/error500.php
protected /views/system/zh_cn/error.php
protected/views/system/error.php
YII_PATH/views/zh_cn/error500.php
YII_PATH/views/error500.php
YII_PATH/views/zh_cn/ error .php
Y II_PATH/views/error.php
Ausnahmebehandlung Der Ausnahmebehandlungsmechanismus ähnelt dem Fehlerbehandlungsmechanismus. Die Protokolle werden ebenfalls aufgezeichnet. „Exception.$EXCEPTIONCLASS“. Wenn es sich um eine CHttpException-Klassenausnahme handelt, lautet der Kategoriename „Exception.CHttpException.$STATUS_CODE“. Die Ausnahmeklassifizierung von Daten heißt beispielsweise „Exception.CDbException“.
Als nächstes wird das Fehlerereignis CExceptionEvent zur Verarbeitung an den errorHandler übergeben. Alle Fehlerinformationen werden vom CExceptionEvent-Objekt übergeben. Die Verarbeitungsmethode ist wie folgt:
Im Debug-Modus werden die Ansichtsdateien in der folgenden Reihenfolge durchsucht und die erste durchsuchte Datei wird verwendet
protected/views/system/Exception.php
YII_PATH/views/ Ausnahme.php
Wenn es sich im Nicht-Debugging-Modus befindet und die Attributroute „errorAction“ für die Komponente „errorHandler“ in der Konfigurationsdatei definiert ist, führen Sie es aus, andernfalls fahren Sie mit Schritt 3 fort.
Versuchen Sie, Ansichtsdateien in der folgenden Reihenfolge zu laden. Die zuerst gesuchte Datei wird verwendet Passen Sie die Details der Fehlerseite an. Das anschließende Flussdiagramm beschreibt den Prozess im Detail.
Wie Sie auf dem Bild sehen können, besteht der einfachste Weg darin, das Attribut „errorAction“ für die Komponente „errorHandler“ festzulegen, um die Route anzugeben, auf der der Fehler auftritt.
Im Allgemeinen sind wir am meisten besorgt über die Anzeige der Fehlerseite im Produktionsmodus. Nach der obigen Analyse stehen zwei Methoden zur Verfügung:
Definieren Sie das Routing-Attribut „errorAction“ für die Komponente „errorHandler“ in der Konfigurationsdatei (diese Methode sollte zuerst verwendet werden, um eine flexible Konfiguration zu erreichen).
Definieren eine der folgenden Dateien zum Implementieren benutzerdefinierter Fehlerseite (nicht empfohlen)
Protected/views/system/zh_cn/error500.php
protected/views/system/error500.php
protected/views/system/zh_cn/error. php
protected/views/system/ error.php
Die erste Methode ist flexibel und kontrollierbar. Sie können die Ansichtsdatei im Controller angeben, die flexibel und kontrollierbar ist.
Beispiel für die Verwendung eines Fehlerhandlers
yiiwebErrorHandler ist als Anwendungskomponente mit dem Namen errorHandler registriert, die in der Anwendungskonfiguration wie folgt konfiguriert werden kann:
protected/views/system/zh_cn/error500.phpprotected/views/system/error500.phpprotected/views/system/zh_cn/error.phpprotected/views/system/error.phpYII_PATH/views/zh_cn/error500.phpYII_PATH/views/error500.phpYII_PATH/views/zh_cn/error.phpY II_PATH/views/error.php
Mit dem obigen Code zeigt die Ausnahmeseite bis zu 20 Quellcodes an.
Wie bereits erwähnt, wandelt der Fehlerhandler alle nicht schwerwiegenden PHP-Fehler in abfangbare Ausnahmen um, was bedeutet, dass Sie den folgenden Code zur Behandlung von PHP-Fehlern verwenden können:
return [ 'components' => [ 'errorHandler' => [ 'maxSourceLines' => 20, ], ], ];
Wenn Sie eine Fehlerseite anzeigen möchten, die den Benutzer über die Anforderung informiert ist ungültig oder Wenn es nicht behandelt werden kann, können Sie einfach eine yiiwebHttpException auslösen, z. B. yiiwebNotFoundHttpException. Der Fehlerhandler legt den Antwort-HTTP-Statuscode korrekt fest und verwendet die entsprechende Fehleransichtsseite, um die Fehlermeldung anzuzeigen.
use Yii; use yii\base\ErrorException; try { 10/0; } catch (ErrorException $e) { Yii::warning("pision by zero."); } // execution continues...
Benutzerdefinierte Fehleranzeige
yiiwebErrorHandler-Fehlerhandler passt die Fehleranzeige entsprechend dem Wert der Konstante YII_DEBUG an (was den Debug-Modus anzeigt), zeigt der Fehlerhandler Ausnahmen und detaillierte Funktionsaufrufstapel und Quellcodezeilen an, um zu helfen Beim Debuggen werden nur Fehlermeldungen angezeigt, wenn YII_DEBUG falsch ist, um den Verlust vertraulicher Informationen der Anwendung zu verhindern.
Hinzugefügt: Wenn die Ausnahme yiibaseUserException erbt, werden die Informationen zum Funktionsaufrufstapel unabhängig vom Wert von YII_DEBUG nicht angezeigt. Dies liegt daran, dass dieser Fehler als vom Benutzer generierter Fehler betrachtet wird und Entwickler ihn nicht korrigieren müssen .
yiiwebErrorHandler-Fehlerhandler verwendet standardmäßig zwei Ansichten zur Anzeige von Fehlern:
@yii/views/errorHandler/error.php: wird zur Anzeige von Fehlermeldungen verwendet, die keine Informationen zum Funktionsaufrufstapel enthalten. Wenn YII_DEBUG falsch ist, sind es alle Fehler die Aussicht genutzt.
@yii/views/errorHandler/Exception.php: Wird beim Anzeigen von Fehlermeldungen verwendet, die Informationen zum Funktionsaufrufstapel enthalten.
Sie können die Eigenschaften yiiwebErrorHandler::errorView und yiiwebErrorHandler::ExceptionView des Fehlerhandlers konfigurieren, um eine benutzerdefinierte Fehleranzeigeansicht zu verwenden.
Fehleraktion verwenden
Es ist bequemer, die angegebene Fehleraktion zum Anpassen der Fehleranzeige zu verwenden. Konfigurieren Sie dazu zunächst das Attribut yiiwebErrorHandler::errorAction der Komponente errorHandler, ähnlich wie folgt:
use yii\web\NotFoundHttpException; throw new NotFoundHttpException();
yiiwebErrorHandler:: Das Attribut „errorAction“ verwendet das Routing zu einer Aktion. Die obige Konfiguration bedeutet, dass Fehler, die keine Informationen zum Funktionsaufrufstapel anzeigen müssen, durch Ausführen der Site-/Fehleroperation angezeigt werden.
Sie können eine Site-/Fehleraktion wie folgt erstellen:
return [ 'components' => [ 'errorHandler' => [ 'errorAction' => 'site/error', ], ] ];
Der obige Code definiert die Fehleraktion mithilfe der yiiwebErrorAction-Klasse, die eine Ansicht mit dem Namen „error“ rendert, um Fehler anzuzeigen.
Zusätzlich zur Verwendung von yiiwebErrorAction können Sie die Fehleroperation mit einer Operationsmethode ähnlich der folgenden definieren:
namespace app\controllers; use Yii; use yii\web\Controller; class SiteController extends Controller { public function actions() { return [ 'error' => [ 'class' => 'yii\web\ErrorAction', ], ]; } }
Jetzt sollten Sie eine Ansichtsdatei als „views/site/error.php“ erstellen. Wenn der Fehler auftritt Aktion ist als yiiwebErrorAction definiert, auf die Sie zugreifen können. Die folgenden Variablen sind in dieser Operation definiert:
Name: Fehlername
Nachricht: Fehlermeldung
Ausnahme: Ausnahmeobjekt mit detaillierteren Informationen wie HTTP-Statuscode, Fehlercode, Fehleraufrufstapel usw.
Ergänzung: Wenn Sie die Basic Application Template oder die Advanced Application Template verwenden, sind die Fehleroperationen und Fehleransichten bereits definiert.
Benutzerdefiniertes Fehlerformat
Der Fehlerhandler zeigt Fehler entsprechend dem durch die Antwort festgelegten Format an. Wenn das Antwortformat yiiwebResponse::format HTML ist, wird die Fehler- oder Ausnahmeansicht verwendet, um die Fehlerinformationen anzuzeigen, wie im beschrieben vorherigen Abschnitt. Bei anderen Antwortformaten weist der Fehlerhandler die Fehlerinformationen als Array dem Attribut yiiwebResponse::data zu und konvertiert sie dann in das entsprechende Format. Wenn das Antwortformat beispielsweise json ist, können Sie die folgenden Antwortinformationen sehen:
public function actionError() { $exception = Yii::$app->errorHandler->exception; if ($exception !== null) { return $this->render('error', ['exception' => $exception]); } }
Kann in der Anwendung verwendet werden. Reagieren Sie auf das beforeSend-Ereignis der Antwortkomponente in der Konfiguration, um das Fehlerantwortformat anzupassen.
return [ // ... 'components' => [ 'response' => [ 'class' => 'yii\web\Response', 'on beforeSend' => function ($event) { $response = $event->sender; if ($response->data !== null) { $response->data = [ 'success' => $response->isSuccessful, 'data' => $response->data, ]; $response->statusCode = 200; } }, ], ], ];
上述代码会重新格式化错误响应,类似如下:
HTTP/1.1 200 OK Date: Sun, 02 Mar 2014 05:31:43 GMT Server: Apache/2.2.26 (Unix) DAV/2 PHP/5.4.20 mod_ssl/2.2.26 OpenSSL/0.9.8y Transfer-Encoding: chunked Content-Type: application/json; charset=UTF-8 { "success": false, "data": { "name": "Not Found Exception", "message": "The requested resource was not found.", "code": 0, "status": 404 } }
推荐学习:php视频教程
Das obige ist der detaillierte Inhalt vonBeispiele zur Erläuterung, wie PHP Fehler und Ausnahmen im Yii-Framework behandelt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.
