Application.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. namespace Benchmark;
  3. use Benchmark\Resources\{DbResource, FortuneResource, HelloJsonResource, HelloTextResource, QueriesResource, UpdateResource};
  4. use Cache\Adapter\PHPArray\ArrayCachePool;
  5. use Hamlet\Database\Database;
  6. use Hamlet\Http\Applications\AbstractApplication;
  7. use Hamlet\Http\Requests\Request;
  8. use Hamlet\Http\Resources\{HttpResource, NotFoundResource};
  9. use Hamlet\Http\Responses\{Response, ServerErrorResponse};
  10. use Psr\Cache\CacheItemPoolInterface;
  11. class Application extends AbstractApplication
  12. {
  13. /** @var CacheItemPoolInterface */
  14. private $cache;
  15. /** @var Database */
  16. private $database;
  17. public function __construct(Database $database)
  18. {
  19. $this->cache = new ArrayCachePool;
  20. $this->database = $database;
  21. }
  22. public function findResource(Request $request): HttpResource
  23. {
  24. switch ($request->getPath()) {
  25. case '/plaintext':
  26. return new HelloTextResource;
  27. case '/json':
  28. return new HelloJsonResource;
  29. case '/db':
  30. return new DbResource($this->database);
  31. case '/queries':
  32. return new QueriesResource($this->database);
  33. case '/fortunes':
  34. return new FortuneResource($this->database);
  35. case '/update':
  36. return new UpdateResource($this->database);
  37. }
  38. return new NotFoundResource;
  39. }
  40. protected function getCache(Request $request): CacheItemPoolInterface
  41. {
  42. return $this->cache;
  43. }
  44. }