Render.php 957 B

1234567891011121314151617181920212223242526272829303132
  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. class Render extends \Hyperf\View\Render
  9. {
  10. public function render(string $template, array $data)
  11. {
  12. switch ($this->mode) {
  13. case Mode::SYNC:
  14. /** @var EngineInterface $engine */
  15. $engine = $this->container->get($this->engine);
  16. $result = $engine->render($template, $data, $this->config);
  17. break;
  18. case Mode::TASK:
  19. default:
  20. $executor = $this->container->get(TaskExecutor::class);
  21. $result = $executor->execute(new Task([$this->engine, 'render'], [$template, $data, $this->config]));
  22. }
  23. return $this->response()->withAddedHeader('content-type', 'text/html; charset=utf-8')->withBody(new SwooleStream($result));
  24. }
  25. }