


In diesem Artikel wird erläutert, wie Sie globale Ausnahmen in thinkphp5 anpassen
Die folgende Tutorial-Kolumne zum Thinkphp-Framework erklärt Ihnen, wie Sie globale Ausnahmen in thinkphp5 anpassen. Ich hoffe, dass es für Freunde in Not hilfreich ist! Um beim Schreiben der API unangemessenen JSON zurückzugeben, verwenden Sie direkt die mit TP5 gelieferte Fehlerseite. Dies hat offensichtlich keine Auswirkungen auf den Client, daher müssen Sie die globale Ausnahme selbst anpassen. 1. Erstellen Sie eine globale Ausnahmeklasse (zur Übertragung von Fehlermeldungen, Statuscodes usw.)
use think\Exception; class BaseException extends Exception { /** HTTP 状态码 * @var string */ public $code; /** 自定义错误码 * @var string */ public $errorCode; /** 错误信息 * @var string */ public $msg; public function __construct($params=[]) { if (! $params) { return ; } // 如果传了 code if ($array_key_exists('code', $code) { $this->code = $code; } // 如果传了 errorCode if (array_key_exists('errorCode', $params)) { $this->errorCode = $params['errorCode']; } // 如果传了 msg if (array_key_exists('msg', $params)) { $this->msg = $params['msg']; } } }
Auf diese Weise können Sie Statuscodes, Fehlermeldungen und benutzerdefinierte Fehlercodes angeben, die nicht übergeben werden können.
2. Erstellen Sie eine Fehlerbehandlungsklasse
Die Fehlerbehandlungsklasse erbt von der Fehlerbehandlungsklasse, die mit TP5 geliefert wird, und Sie können Fehler anpassen.
use Exception; use think\exception\Handle; use think\Request; class ExceptionHandle extends Handle { /** 状态码 * @var */ private $code; /** 自定义错误码 * @var */ private $errorCode; /** 错误信息 * @var */ private $msg; /** 重写 Handle 方法里的Render * @param Exception $e * @return \think\response\Json */ // 注意这里是基类 Exception public function render(Exception $e) { if ($e instanceof BaseException) { //如果是自定义异常,则控制http状态码,不需要记录日志 //因为这些通常是因为客户端传递参数错误或者是用户请求造成的异常 //不应当记录日志 $this->msg = $e->msg; $this->code = $e->code; $this->errorCode = $e->errorCode; } else { // 如果是服务器未处理的异常,将http状态码设置为500,并记录日志 if (config('app_debug')) { // 调试状态下需要显示TP默认的异常页面,因为TP的默认页面 // 很容易看出问题 return parent::render($e); } $this->code = 500; $this->msg = '服务器内部错误,不想告诉你'; $this->errorCode = 999; $this->recordErrorLog($e); } $request = Request::instance(); $result = [ 'msg' => $this->msg, 'errorCode' => $this->errorCode, 'request_url' => $request->url() ]; return json($result, $this->code); } /** 错误日志处理 * 这里把config里日志配置的type改为test * @param Exception $e */ private function recordErrorLog(Exception $e) { // 开启日志 Log::init([ 'type' => 'File', 'path' => LOG_PATH, 'level' => ['error'] ]); // 日志记录方法 Log::record($e->getMessage(),'error'); } }
3. Ändern Sie die Konfigurationskonfiguration
// 异常处理handle类 留空使用 \think\exception\Handle 'exception_handle' => 'app\lib\exception\ExceptionHandle', // 关闭日志 'log' => [ // 日志记录方式,内置 file socket 支持扩展 // 关闭自动记录日志,请将type设置为test 'type' => 'test', // 日志保存目录 'path' => __DIR__.'/../log/', // 日志记录级别 'level' => ['sql'], ],
4. Verwenden Sie die Fehlerklassenmethode
// 这里随便创建一个userControlelr class UserController extends Controller { use app\api\model\User; /** * 根据 id 获取某个用户 */ public function getUser($id) { $user = User::get($id); // 如果 $user 为空 抛出自定义的错误,下面有... if(! $user) { throw UserMissException(); } return json($user); } }
Benutzerdefinierte Fehlerunterklasse
// 上面第一节,写的 Base 错误类派上用场了。 class UserMissException extends BaseException { /** HTTP 状态码 * @var string */ public $code = '404'; /** 自定义错误码 * @var string */ public $errorCode = '40000'; /** 错误信息 * @var string */ public $msg = '请求的用户不存在'; }
Fordern Sie diese getUser-Methode an und melden Sie einen Fehler kann weiterhin Ausnahmeunterklassen erstellen und diese Fehlereigenschaften definieren.
5. Zusammenfassung
Nicht nur im TP5-Framework, einschließlich des Laravel-Frameworks, können Sie auch die Rendermethode der Ausnahmeklasse selbst neu schreiben, um die gewünschten Fehlerrückgabedaten oder Seitenvorlagen zu erreichen.
Das obige ist der detaillierte Inhalt vonIn diesem Artikel wird erläutert, wie Sie globale Ausnahmen in thinkphp5 anpassen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

In dem Artikel wird das integrierte Test-Framework von ThinkPhP erläutert, wobei die wichtigsten Funktionen wie Einheit und Integrationstests hervorgehoben werden und wie die Anwendungszuverlässigkeit durch frühzeitige Fehlererkennung und verbesserte Codequalität verbessert wird.

In Artikel wird ThinkPhp für Echtzeit-Aktienmarktdaten-Feeds mit dem Schwerpunkt auf Setup, Datengenauigkeit, Optimierung und Sicherheitsmaßnahmen erörtert.

In dem Artikel werden wichtige Überlegungen zur Verwendung von ThinkPhp in serverlosen Architekturen erörtert, wobei der Schwerpunkt auf Leistungsoptimierung, staatslosem Design und Sicherheit liegt. Es unterstreicht Vorteile wie Kosteneffizienz und Skalierbarkeit, befasst sich aber auch mit Herausforderungen

In dem Artikel wird die Implementierung der Service -Erkennung und des Lastausgleichs in ThinkPhp Microservices erläutert und sich auf Setup, Best Practices, Integrationsmethoden und empfohlene Tools konzentrieren. [159 Zeichen]

IOC -Container von ThinkPhp bietet erweiterte Funktionen wie fauler Laden, Kontextbindung und Methodeninjektion für eine effiziente Abhängigkeitsführung in PHP -Apps.character Count: 159

In dem Artikel wird die Verwendung von ThinkPhp zum Aufbau von Tools in Echtzeitkollaboration erläutert und sich auf Setup, WebSocket-Integration und Best Practices für Sicherheitsförderungen konzentriert.

ThinkPhp profitiert SaaS -Apps mit leichten Design, MVC -Architektur und Erweiterbarkeit. Es verbessert die Skalierbarkeit, beschleunigt die Entwicklung und verbessert die Sicherheit durch verschiedene Merkmale.

Der Artikel beschreibt das Erstellen eines verteilten Task -Warteschlangensystems mit ThinkPhp und RabbitMQ, wobei sich die Installation, Konfiguration, Aufgabenverwaltung und Skalierbarkeit konzentriert. Zu den wichtigsten Problemen gehören die Gewährleistung einer hohen Verfügbarkeit, die Vermeidung häufiger Fallstricke wie Unmensch


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

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft