Render.php 1022 B

123456789101112131415161718192021222324252627282930313233
  1. <?php
  2. namespace App;
  3. use Hyperf\HttpMessage\Stream\SwooleStream;
  4. use Hyperf\Task\Task;
  5. use Hyperf\Task\TaskExecutor;
  6. use Hyperf\View\Engine\EngineInterface;
  7. use Hyperf\View\Mode;
  8. use Psr\Http\Message\ResponseInterface;
  9. class Render extends \Hyperf\View\Render
  10. {
  11. public function render(string $template, array $data = []): ResponseInterface
  12. {
  13. switch ($this->mode) {
  14. case Mode::SYNC:
  15. /** @var EngineInterface $engine */
  16. $engine = $this->container->get($this->engine);
  17. $result = $engine->render($template, $data, $this->config);
  18. break;
  19. case Mode::TASK:
  20. default:
  21. $executor = $this->container->get(TaskExecutor::class);
  22. $result = $executor->execute(new Task([$this->engine, 'render'], [$template, $data, $this->config]));
  23. }
  24. return $this->response()->withAddedHeader('content-type', 'text/html; charset=utf-8')->withBody(new SwooleStream($result));
  25. }
  26. }