Application.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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 Database */
  21. private $database;
  22. public function __construct(Database $database)
  23. {
  24. $this->database = $database;
  25. }
  26. public function findResource(Request $request): HttpResource
  27. {
  28. switch ($request->getPath()) {
  29. case '/plaintext':
  30. return new HelloTextResource();
  31. case '/json':
  32. return new HelloJsonResource();
  33. case '/db':
  34. return new DbResource($this->database);
  35. case '/queries':
  36. return new QueriesResource($this->database);
  37. case '/fortunes':
  38. return new FortuneResource($this->database);
  39. case '/update':
  40. return new UpdateResource($this->database);
  41. }
  42. return new NotFoundResource();
  43. }
  44. protected function getCache(Request $request): CacheItemPoolInterface
  45. {
  46. if (!$this->cache) {
  47. $this->cache = new ArrayCachePool();
  48. }
  49. return $this->cache;
  50. }
  51. }