Просмотр файла app/Services/View.php

Размер файла: 1.34Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Services;
  6.  
  7. use League\Plates\Engine;
  8. use League\Plates\Extension\Asset;
  9. use Psr\Http\Message\ResponseInterface;
  10.  
  11. class View
  12. {
  13. private Engine $engine;
  14.  
  15. public function __construct(string $directory, string $fileExtension = 'php')
  16. {
  17. $this->engine = new Engine($directory, $fileExtension);
  18. $this->engine->loadExtension(new Asset(publicPath()));
  19. }
  20.  
  21. /**
  22. * @param ResponseInterface $response
  23. * @param string $name
  24. * @param array $data
  25. *
  26. * @return ResponseInterface
  27. */
  28. public function render(ResponseInterface $response, string $name, array $data = []): ResponseInterface
  29. {
  30. $render = $this->engine->render($name, $data);
  31.  
  32. $response->getBody()->write($render);
  33.  
  34. return $response;
  35. }
  36.  
  37. /**
  38. * @param string $name
  39. * @param array $data
  40. *
  41. * @return string
  42. */
  43. public function fetch(string $name, array $data = []): string
  44. {
  45. return $this->engine->render($name, $data);
  46. }
  47.  
  48. /**
  49. * @param string $name
  50. *
  51. * @return bool
  52. */
  53. public function exists(string $name): bool
  54. {
  55. return $this->engine->exists($name);
  56. }
  57.  
  58. /**
  59. * @return Engine
  60. */
  61. public function getEngine(): Engine
  62. {
  63. return $this->engine;
  64. }
  65. }