Application.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace Benchmark;
  3. use Benchmark\Resources\DbResource;
  4. use Benchmark\Resources\FortuneResource;
  5. use Benchmark\Resources\HelloJsonResource;
  6. use Benchmark\Resources\HelloTextResource;
  7. use Benchmark\Resources\QueriesResource;
  8. use Benchmark\Resources\UpdateResource;
  9. use Cache\Adapter\PHPArray\ArrayCachePool;
  10. use Hamlet\Database\Database;
  11. use Hamlet\Http\Applications\AbstractApplication;
  12. use Hamlet\Http\Requests\Request;
  13. use Hamlet\Http\Resources\HttpResource;
  14. use Hamlet\Http\Resources\NotFoundResource;
  15. use Psr\Cache\CacheItemPoolInterface;
  16. class Application extends AbstractApplication
  17. {
  18. /** @var CacheItemPoolInterface|null */
  19. private $cache;
  20. /** @var HttpResource */
  21. private $helloTextResource;
  22. /** @var HttpResource */
  23. private $helloJsonResource;
  24. /** @var HttpResource */
  25. private $dbResource;
  26. /** @var HttpResource */
  27. private $queriesResource;
  28. /** @var HttpResource */
  29. private $fortuneResource;
  30. /** @var HttpResource */
  31. private $updateResource;
  32. public function __construct(Database $database)
  33. {
  34. $this->helloJsonResource = new HelloJsonResource();
  35. $this->helloTextResource = new HelloTextResource();
  36. $this->dbResource = new DbResource($database);
  37. $this->queriesResource = new QueriesResource($database);
  38. $this->fortuneResource = new FortuneResource($database);
  39. $this->updateResource = new UpdateResource($database);
  40. }
  41. public function findResource(Request $request): HttpResource
  42. {
  43. switch ($request->getPath()) {
  44. case '/plaintext':
  45. return $this->helloTextResource;
  46. case '/json':
  47. return $this->helloJsonResource;
  48. case '/db':
  49. return $this->dbResource;
  50. case '/queries':
  51. return $this->queriesResource;
  52. case '/fortunes':
  53. return $this->fortuneResource;
  54. case '/update':
  55. return $this->updateResource;
  56. }
  57. return new NotFoundResource();
  58. }
  59. protected function getCache(Request $request): CacheItemPoolInterface
  60. {
  61. if (!$this->cache) {
  62. $this->cache = new ArrayCachePool();
  63. }
  64. return $this->cache;
  65. }
  66. }