app.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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('Date', Storage::$date);
  33. });
  34. // #2 JSON Serialization
  35. $app->get('/json',
  36. function ($request, $response) {
  37. return $response
  38. ->with([ 'message' => 'Hello, World!' ])
  39. ->withHeader('Date', Storage::$date);
  40. });
  41. // #3 Single Database Query
  42. $app->get('/db',
  43. DbController::class);
  44. // #4: Multiple Database Queries
  45. $app->get('/query',
  46. QueryController::class);
  47. // #5: Update Database Rows
  48. $app->get('/update',
  49. UpdateController::class);
  50. // #6 Return Fortunes
  51. $app->get('/fortunes',
  52. FortuneController::class);
  53. $app->run();