Hello.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. namespace Vanilla\Controller;
  3. use Pimf\Controller\Base, Pimf\View, Pimf\Registry;
  4. class Hello extends Base
  5. {
  6. /**
  7. * A index action - this is a framework restriction!
  8. */
  9. public function indexAction()
  10. {
  11. $this->plaintextAction();
  12. }
  13. /**
  14. * Test 1: JSON serialization
  15. */
  16. public function jsonAction()
  17. {
  18. $this->response->asJSON()->send(array("message" => "Hello, World!"));
  19. }
  20. /**
  21. * Test 2: Multiple database queries
  22. */
  23. public function queriesAction()
  24. {
  25. $queries = max(1, min($this->request->fromGet()->get('queries', 1), 500));
  26. $worlds = array();
  27. for ($i = 0; $i < $queries; ++$i) {
  28. $worlds[] = Registry::get('em')->world->find(mt_rand(1, 10000));
  29. }
  30. $this->response->asJSON()->send($worlds);
  31. }
  32. /**
  33. * Test 3: Single database query
  34. */
  35. public function dbAction()
  36. {
  37. $worlds = Registry::get('em')->world->find(mt_rand(1, 10000));
  38. $this->response->asJSON()->send($worlds);
  39. }
  40. private static function my_cmp($a, $b)
  41. {
  42. return strcmp($a["message"], $b["message"]);
  43. }
  44. /**
  45. * Test 4: Fortunes
  46. */
  47. public function fortunesAction()
  48. {
  49. $fortunes = Registry::get('em')->fortune->getAll();
  50. $fortunes[] = array(
  51. 'id' => 0,
  52. 'message' => 'Additional fortune added at request time.'
  53. );
  54. usort($fortunes, array($this, "my_cmp"));
  55. $view = new View('table.phtml', array('fortunes' => $fortunes));
  56. $this->response->asHTML()->send($view);
  57. }
  58. /**
  59. * Test 5: Database updates
  60. */
  61. public function updatesAction()
  62. {
  63. $queries = max(1, min($this->request->fromGet()->get('queries', 1), 500));
  64. $worlds = array();
  65. /* @var $em \Pimf\EntityManager */
  66. $em = Registry::get('em');
  67. $em->beginTransaction();
  68. for ($i = 0; $i < $queries; ++$i) {
  69. $worlds[] = $em->world->find(mt_rand(1, 10000));
  70. }
  71. foreach ($worlds as $row) {
  72. $row['randomNumber'] = rand(1, 10000);
  73. $em->world->update($row);
  74. }
  75. $em->commitTransaction();
  76. $this->response->asJSON()->send($worlds);
  77. }
  78. /**
  79. * Test 6: Plaintext
  80. */
  81. public function plaintextAction()
  82. {
  83. $this->response->asTEXT()->send('Hello, World!');
  84. }
  85. }