首页 > 其他分享 >hyperf ValidationExceptionHandler

hyperf ValidationExceptionHandler

时间:2024-08-24 23:15:21浏览次数:10  
标签:body ValidationExceptionHandler content hyperf ValidationException throwable typ

<?php

declare(strict_types=1);
/**
 * This file is part of Hyperf.
 *
 * @link     https://www.hyperf.io
 * @document https://hyperf.wiki
 * @contact  [email protected]
 * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
 */

namespace App\Exception\Handler;

use Hyperf\Codec\Json;
use Hyperf\ExceptionHandler\ExceptionHandler;
use Hyperf\HttpMessage\Stream\SwooleStream;
use Hyperf\Validation\ValidationException;
use Swow\Psr7\Message\ResponsePlusInterface;
use Throwable;

class ValidationExceptionHandler extends ExceptionHandler
{
    public function handle(Throwable $throwable, ResponsePlusInterface $response)
    {
        $this->stopPropagation();
        /** @var ValidationException $throwable */
        $body = $throwable->validator->errors()->first();
        if (! $response->hasHeader('content-type')) {
            $response = $response->addHeader('content-type', 'application/json; charset=utf-8');
        }
        $format = [
            'success' => false,
            'code' => 4001,
            'message' => $body,
            'data' => []
        ];

        return $response->setStatus(200)->setBody(new SwooleStream(Json::encode($format)));
    }

    public function isValid(Throwable $throwable): bool
    {
        return $throwable instanceof ValidationException;
    }
}

标签:body,ValidationExceptionHandler,content,hyperf,ValidationException,throwable,typ
From: https://www.cnblogs.com/xuyaoxiang1991/p/18378467

相关文章

  • hyperf 协程作用和相关的方法
    什么是协程协程是一种轻量级的线程,由用户代码来调度和管理,而不是由操作系统内核来进行调度,也就是在用户态进行判断当前是否处于协程环境内在一些情况下我们希望判断一些当前是否运行于协程环境内,对于一些兼容协程环境与非协程环境的代码来说会作为一个判断的依据,我们可......
  • centos7.9 安装Hyperf 环境
    安装php7.4cat/etc/redhat-releaseyuminstallepel-releaserpm-Uvhhttps://rpms.remirepo.net/enterprise/remi-release-7.rpmyuminstall-yyum-utilsyum-config-manager--enableremi-php74yuminstall-yphpphp-fpmphp-cliphp-fpmphp-mysqlndphp-zipphp-d......
  • 基于 Swoole 扩展的框架如 Hyperf 或 EasySwoole的用户请求流程
    当使用基于Swoole扩展的框架如Hyperf或EasySwoole时,不再需要PHP-FPM和传统的FastCGI协议来处理请求。这些框架直接利用Swoole扩展的特性来处理网络请求,并通过协程提高并发处理能力。以下是这些框架处理请求的正确流程:1.Web服务器接收请求Web服务器(如Nginx或......
  • Hyperf 插入json数据需要注意
    我本来的代码是使用了firstOrCreate,但是实际create才会调用到模型文件protectedarray$casts=['id'=>'integer','created_at'=>'datetime','updated_at'=>'datetime','shop_id'=>'intege......
  • Hyperf redis 异步队列使用
    config/autoload/processes.phpuseApp\Book\Process\CreateQrcodeComsumer;return[Mine\Crontab\MineCrontabProcess::class,Hyperf\AsyncQueue\Process\ConsumerProcess::class,CreateQrcodeComsumer::class//增加自定义的异步队列类];由于hyper......
  • hyperf 生成二维码并且转为CMYK色彩通道的图片
    注意:CMYK色彩通道的图片格式需要为JPEG或TIFF,png是不支持CMYK的,不然转换的话会转换会srgb或Gray使用前先安装imagick拓展1{2"require":{3"ext-imagick":"*"4}5}  1publicfunctioncreateQrcode($data):void2{3//......
  • laravel,webman,hyperf,thinkphp推荐哪一个?
    2024年5月11日14:11:45laravelwebmanhyperfthinkphp流行程度国内流行,欧洲特别是法国,美国,日本很多使用主要在国内流行,少量国外使用主要国内流行,少量国外使用国内流行,国外俄罗斯有使用性能fpm多进程模式,性能一般,偏差同步阻塞多进程模式,性能很好web第一梯队协......
  • Hyperf 的AOP 面向切面编程实战
    概念AOP为 AspectOrientedProgramming 的缩写,意为:面向切面编程,通过动态代理等技术实现程序功能的统一维护的一种技术。AOP是OOP的延续,也是Hyperf中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的......
  • 基于Hyperf的CMS,企业官网通用php-swoole后台管理系统
    2023年9月11日10:47:00仓库地址:https://gitee.com/open-php/zx-hyperf-cmsCMS,企业官网通用PHP后台管理系统框架介绍hyperfSCUI后端开发组件php8.1hyperf3.1数据库sql(使用最新日期文件)hyperf\doc\sql_bakmysql8.系统默认账号密码:admin/admin前端开发组件scui......
  • hyperf文件上传和url函数
    2024年4月29日11:24:35配置静态资源如果您希望Swoole来管理静态资源,请在config/autoload/server.php配置中增加以下配置。return['settings'=>[...//静态资源'document_root'=>BASE_PATH.'/public','enable_sta......