DefaultRouter.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. /**
  3. * Default application router
  4. *
  5. * Copyright © Magento, Inc. All rights reserved.
  6. * See COPYING.txt for license details.
  7. */
  8. namespace Magento\Framework\App\Router;
  9. use Magento\Framework\App\ActionFactory;
  10. use Magento\Framework\App\RequestInterface;
  11. use Magento\Framework\App\RouterInterface;
  12. use Magento\Framework\App\ActionInterface;
  13. class DefaultRouter implements RouterInterface
  14. {
  15. /**
  16. * @var NoRouteHandlerList
  17. */
  18. protected $noRouteHandlerList;
  19. /**
  20. * @var ActionFactory
  21. */
  22. protected $actionFactory;
  23. /**
  24. * @param ActionFactory $actionFactory
  25. * @param NoRouteHandlerList $noRouteHandlerList
  26. */
  27. public function __construct(ActionFactory $actionFactory, NoRouteHandlerList $noRouteHandlerList)
  28. {
  29. $this->actionFactory = $actionFactory;
  30. $this->noRouteHandlerList = $noRouteHandlerList;
  31. }
  32. /**
  33. * Modify request and set to no-route action
  34. *
  35. * @param RequestInterface $request
  36. * @return ActionInterface
  37. */
  38. public function match(RequestInterface $request)
  39. {
  40. foreach ($this->noRouteHandlerList->getHandlers() as $noRouteHandler) {
  41. if ($noRouteHandler->process($request)) {
  42. break;
  43. }
  44. }
  45. return $this->actionFactory->create(\Magento\Framework\App\Action\Forward::class);
  46. }
  47. }