在 Yii2 或原生 PHP 中创建自定义的可抛出类

Create custom throwable class in Yii2 or Native PHP

提问人:Irvan Hilmi 提问时间:5/22/2023 最后编辑:marc_sIrvan Hilmi 更新时间:8/20/2023 访问量:40

问:

我正在创建一个 API,但我想创建一个可抛出的类,例如我想执行这样的东西,我想像这样返回throw new Response(400, 'Invalid Token')

{
  "code": 400,
  "message": "Invalid Token"
}

我试图将类扩展到错误或可抛出类,但结果不断返回堆栈跟踪、行等。

<?php

namespace app\modules\scoring\components;

use Yii;

class Response extends \Exception implements \Throwable {

  public $httpCode;
  public $message;

  public static function set(int $http, array $data = []) {
    $data = \yii\helpers\ArrayHelper::merge($data, [
      'server_time' => date('Y-m-d H:i:s')
    ]);
    Yii::$app->response->statusCode = $http;
    $old = isset(Yii::$app->response->data) ? Yii::$app->response->data : [];
    return Yii::$app->response->data = array_merge($old, $data);
  }

  public static function setNonAjaxRequestError() {
    return self::set(400, [
      'code' => 400,
      'message' => 'Request Must Use HttpRequest'
    ]);
  }

  public function __construct($httpCode, $message) {
    unset($this->line);
    $this->httpCode = $httpCode;
    $this->message = $message;
  }

}

尝试使用像 HttpException 这样的 yii2 类,它总是以其 type 属性返回,有没有办法实现我想要的结果?

php oop 异常 yii2

评论

0赞 SiZE 5/24/2023
yiiframework.com/doc/guide/2.0/en/......但是,您可以了解格式例外是如何 github.com/yiisoft/yii2/blob/master/framework/web/ 的,并使其成为您自己的例外。或者我建议不要更改它,只需为 JSON 响应设置正确的标头。ErrorHandler

答: 暂无答案