34 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | ||
| 
 | ||
| declare(strict_types=1);
 | ||
| 
 | ||
| namespace App\Aspect;
 | ||
| 
 | ||
| use App\Helper\Result;
 | ||
| use Hyperf\Di\Annotation\Aspect;
 | ||
| use Hyperf\Di\Aop\AbstractAspect;
 | ||
| use Hyperf\Di\Aop\ProceedingJoinPoint;
 | ||
| use Hyperf\HttpServer\CoreMiddleware;
 | ||
| use Hyperf\Paginator\Paginator;
 | ||
| 
 | ||
| #[Aspect]
 | ||
| class ResponseMiddlewareAspect extends AbstractAspect
 | ||
| {
 | ||
|     // 要切入的类或 Trait,可以多个,亦可通过 :: 标识到具体的某个方法,通过 * 可以模糊匹配
 | ||
|     public $classes = [
 | ||
|         CoreMiddleware::class . '::transferToResponse'
 | ||
|     ];
 | ||
| 
 | ||
|     public function process(ProceedingJoinPoint $proceedingJoinPoint)
 | ||
|     {
 | ||
|         $response = $proceedingJoinPoint->arguments['keys']['response'];
 | ||
| 
 | ||
|         if ($response === null || is_array($response)) {
 | ||
|             $proceedingJoinPoint->arguments['keys']['response'] = Result::result($response);
 | ||
|         } else if ($response instanceof Paginator) {
 | ||
|             $proceedingJoinPoint->arguments['keys']['response'] = Result::result($response->toArray());
 | ||
|         }
 | ||
| 
 | ||
|         return $proceedingJoinPoint->process();
 | ||
|     }
 | ||
| } |