‪TYPO3CMS  11.5
RequestHandlerResolver.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the TYPO3 CMS project.
5  *
6  * It is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU General Public License, either version 2
8  * of the License, or any later version.
9  *
10  * For the full copyright and license information, please read the
11  * LICENSE.txt file that was distributed with this source code.
12  *
13  * The TYPO3 project - inspiring people to share!
14  */
15 
16 namespace ‪TYPO3\CMS\Extbase\Mvc;
17 
18 use Psr\Container\ContainerInterface;
21 
27 {
31  private ‪$container;
32 
37 
39  {
40  $this->container = ‪$container;
41  $this->requestHandlersConfiguration = ‪$requestHandlersConfiguration;
42  }
43 
52  public function ‪resolveRequestHandler(‪RequestInterface $request)
53  {
54  $suitableRequestHandlers = [];
55  foreach ($this->requestHandlersConfiguration->getRegisteredRequestHandlers() as $requestHandlerClassName) {
57  $requestHandler = $this->container->has($requestHandlerClassName)
58  ? $this->container->get($requestHandlerClassName)
59  : GeneralUtility::makeInstance($requestHandlerClassName)
60  ;
61  if ($requestHandler->canHandleRequest($request)) {
62  $priority = $requestHandler->getPriority();
63  if (isset($suitableRequestHandlers[$priority])) {
64  throw new ‪Exception('More than one request handler with the same priority can handle the request, but only one handler may be active at a time!', 1176475350);
65  }
66  $suitableRequestHandlers[$priority] = $requestHandler;
67  }
68  }
69  if (empty($suitableRequestHandlers)) {
70  throw new Exception('No suitable request handler found.', 1205414233);
71  }
72  ksort($suitableRequestHandlers);
73  return array_pop($suitableRequestHandlers);
74  }
75 }
‪TYPO3\CMS\Extbase\Mvc\Exception
Definition: Exception.php:25
‪TYPO3\CMS\Extbase\Mvc\RequestHandlerResolver\$container
‪ContainerInterface $container
Definition: RequestHandlerResolver.php:30
‪TYPO3\CMS\Extbase\Mvc\RequestHandlerResolver\resolveRequestHandler
‪TYPO3 CMS Extbase Mvc RequestHandlerInterface resolveRequestHandler(RequestInterface $request)
Definition: RequestHandlerResolver.php:50
‪TYPO3\CMS\Extbase\Mvc\RequestHandlerResolver\$requestHandlersConfiguration
‪RequestHandlersConfiguration $requestHandlersConfiguration
Definition: RequestHandlerResolver.php:34
‪TYPO3\CMS\Extbase\Mvc
‪TYPO3\CMS\Extbase\Mvc\RequestHandlerResolver\__construct
‪__construct(ContainerInterface $container, RequestHandlersConfiguration $requestHandlersConfiguration)
Definition: RequestHandlerResolver.php:36
‪TYPO3\CMS\Extbase\Configuration\RequestHandlersConfiguration
Definition: RequestHandlersConfiguration.php:24
‪TYPO3\CMS\Extbase\Mvc\RequestInterface
Definition: RequestInterface.php:27
‪TYPO3\CMS\Extbase\Mvc\RequestHandlerResolver
Definition: RequestHandlerResolver.php:27
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50