TestMultipleHttpKernel.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Symfony\Tests\Component\HttpKernel\HttpCache;
  11. use Symfony\Component\HttpKernel\HttpKernel;
  12. use Symfony\Component\HttpKernel\HttpKernelInterface;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
  16. use Symfony\Component\EventDispatcher\EventDispatcher;
  17. class TestMultipleHttpKernel extends HttpKernel implements ControllerResolverInterface
  18. {
  19. protected $bodies;
  20. protected $statuses;
  21. protected $headers;
  22. protected $catch;
  23. protected $call;
  24. public function __construct($responses)
  25. {
  26. $this->bodies = array();
  27. $this->statuses = array();
  28. $this->headers = array();
  29. $this->call = false;
  30. foreach ($responses as $response) {
  31. $this->bodies[] = $response['body'];
  32. $this->statuses[] = $response['status'];
  33. $this->headers[] = $response['headers'];
  34. }
  35. parent::__construct(new EventDispatcher(), $this);
  36. }
  37. public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = false)
  38. {
  39. return parent::handle($request, $type, $catch);
  40. }
  41. public function getController(Request $request)
  42. {
  43. return array($this, 'callController');
  44. }
  45. public function getArguments(Request $request, $controller)
  46. {
  47. return array($request);
  48. }
  49. public function callController(Request $request)
  50. {
  51. $this->called = true;
  52. $response = new Response(array_shift($this->bodies), array_shift($this->statuses), array_shift($this->headers));
  53. return $response;
  54. }
  55. public function hasBeenCalled()
  56. {
  57. return $this->called;
  58. }
  59. public function reset()
  60. {
  61. $this->call = false;
  62. }
  63. }