DemoController.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller\Api\v1;
  4. use App\Controller\AbstractController;
  5. use App\Model\Arts\DemoModel;
  6. use App\Request\Api\v1\DemoIndexRequest;
  7. use App\Service\QueueService;
  8. use App\Utils\AppResult;
  9. use App\Utils\Control\AuthUser;
  10. use Hyperf\Di\Annotation\Inject;
  11. use Psr\Http\Message\ServerRequestInterface;
  12. use function Hyperf\Coroutine\co;
  13. /**
  14. * Demo
  15. * 示例
  16. */
  17. class DemoController extends AbstractController
  18. {
  19. // 日志模块名称
  20. const LOG_MODULE = 'v1/DemoController';
  21. #[Inject]
  22. protected QueueService $service;
  23. /**
  24. * 示例接口
  25. *
  26. * @param DemoIndexRequest $request 校验参数注入类
  27. * @return string
  28. */
  29. public function index(DemoIndexRequest $request)
  30. {
  31. /**
  32. * 当处理HTTP请求时,无论是通过路径参数、查询参数还是请求体传递的参数,Hyperf都会将其作为字符串类型返回。
  33. * 这是因为HTTP请求中的参数本质上就是字符串,即使它们代表的是其他数据类型(如整数、布尔值等)。
  34. * 注意:所有的参数(除 Content-type:application/json 外)类型都是字符串 如有需要 则可强转后使用
  35. * 例如,如果期望得到一个整数值,可以使用 intval() 函数将字符串转换为整数。同样,对于布尔值,可以使用 boolval() 函数。
  36. *
  37. * POST 建议使用 Content-type:application/json
  38. */
  39. $params = $request->validated();// 获取校验参数结果
  40. /**
  41. * 获取用户信息
  42. */
  43. $user = AuthUser::getInstance()->get();
  44. $model = new DemoModel();
  45. $list = $model->getList($params);
  46. $setup = site('logo');
  47. // 测试投递异步队列消息
  48. $this->service->demoPush(['name' => 'one'], 10);
  49. // 携程 闭包
  50. co(function () use ($params){
  51. sleep(10);
  52. });
  53. return AppResult::response200('Coming Soon!!!', [
  54. 'params' => $params,
  55. 'list' => $list,
  56. 'module_setup' => $setup,
  57. ]);
  58. }
  59. /**
  60. * 原始示例
  61. * @param ServerRequestInterface $request
  62. * @return string
  63. */
  64. public function demo01(ServerRequestInterface $request)
  65. {
  66. return AppResult::response200('Coming Soon!!!', [
  67. // 获取请求参数方式
  68. 'params' => $request->getQueryParams()
  69. ]);
  70. }
  71. }