<?php declare(strict_types=1); namespace App\Controller; use App\Exception\BusinessException; use App\JsonRpc\UserExternalServiceInterface; use Hyperf\Di\Annotation\Inject; use Hyperf\HttpServer\Annotation\AutoController; use Hyperf\Utils\Collection; use Hyperf\Paginator\Paginator; /** * 示例控制器 */ #[AutoController] class TestController extends BaseController { /** * @var UserExternalServiceInterface */ #[Inject] protected UserExternalServiceInterface $userService; /** * 返回数据示例 * * @return array */ public function index() { $data['user_id'] = 'test'; return $data; } /** * 空返回示例 * * @return void */ public function empty() {} /** * 错误示例 * * @return mixed */ public function error() { throw new BusinessException(500, 'error'); } /** * 分页示例 * * @return Paginator */ public function page() { $currentPage = (int) $this->request->input('page', 1); $perPage = (int) $this->request->input('per_page', 2); // 这里根据 $currentPage 和 $perPage 进行数据查询,以下使用 Collection 代替 $collection = new Collection([ ['id' => 1, 'name' => 'Tom'], ['id' => 2, 'name' => 'Sam'], ['id' => 3, 'name' => 'Tim'], ['id' => 4, 'name' => 'Joe'], ]); $users = array_values($collection->forPage($currentPage, $perPage)->toArray()); return new Paginator($users, $perPage, $currentPage); } /** * RPC调用示例 * * @return array */ public function user_info() { return $this->getServiceResult($this->userService->getUserInfo()); } }