app.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. declare(strict_types=1);
  3. use App\ORM;
  4. use App\Storage;
  5. use Comet\Comet;
  6. use Comet\Timer;
  7. use App\Controllers\DbController;
  8. use App\Controllers\QueryController;
  9. use App\Controllers\UpdateController;
  10. use App\Controllers\FortuneController;
  11. require_once __DIR__ . '/vendor/autoload.php';
  12. // TODO Use Timer to setup Date header once per second!
  13. $app = new Comet([
  14. 'host' => '0.0.0.0',
  15. 'port' => 8080,
  16. 'debug' => false,
  17. 'logger' => null,
  18. ]);
  19. $app->init(
  20. function() {
  21. ORM::init();
  22. Storage::$date = gmdate('D, d M Y H:i:s').' GMT';
  23. Timer::add(1, function() {
  24. Storage::$date = gmdate('D, d M Y H:i:s').' GMT';
  25. });
  26. });
  27. // #1 Plaintext
  28. $app->get('/plaintext',
  29. function ($request, $response) {
  30. return $response
  31. ->with('Hello, World!')
  32. ->withHeader('Content-Type', 'text/plain; charset=utf-8')
  33. ->withHeader('Date', Storage::$date);
  34. });
  35. // #2 JSON Serialization
  36. $app->get('/json',
  37. function ($request, $response) {
  38. return $response
  39. ->with([ 'message' => 'Hello, World!' ])
  40. ->withHeader('Date', Storage::$date);
  41. });
  42. // #3 Single Database Query
  43. $app->get('/db',
  44. DbController::class);
  45. // #4: Multiple Database Queries
  46. $app->get('/query',
  47. QueryController::class);
  48. // #5: Update Database Rows
  49. $app->get('/update',
  50. UpdateController::class);
  51. // #6 Return Fortunes
  52. $app->get('/fortunes',
  53. FortuneController::class);
  54. $app->run();