From 501e5059bdc274a3839c1b3fb2ed5217acf2748c Mon Sep 17 00:00:00 2001 From: Alexander Schnitzler <git@alexanderschnitzler.de> Date: Wed, 9 Sep 2020 11:57:55 +0200 Subject: [PATCH] [TASK] Do not use object manager in RequestHandlerResolver With this patch, the RequestHandlerResolver no longer uses the object manager to create new instances of request handlers but makeInstance instead. Releases: master Resolves: #92241 Change-Id: Ided4139ca7c92ab0cb1d642ffc8a9529aedcfe50 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/65650 Tested-by: TYPO3com <noreply@typo3.com> Tested-by: Christian Kuhn <lolli@schwarzbu.ch> Tested-by: Oliver Bartsch <bo@cedev.de> Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de> Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de> Reviewed-by: Torben Hansen <derhansen@gmail.com> Reviewed-by: Oliver Bartsch <bo@cedev.de> Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de> --- .../Classes/Mvc/RequestHandlerResolver.php | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/typo3/sysext/extbase/Classes/Mvc/RequestHandlerResolver.php b/typo3/sysext/extbase/Classes/Mvc/RequestHandlerResolver.php index 895a1ce4dc86..48d89f9c0354 100644 --- a/typo3/sysext/extbase/Classes/Mvc/RequestHandlerResolver.php +++ b/typo3/sysext/extbase/Classes/Mvc/RequestHandlerResolver.php @@ -15,8 +15,9 @@ namespace TYPO3\CMS\Extbase\Mvc; +use Psr\Container\ContainerInterface; +use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Extbase\Configuration\RequestHandlersConfigurationFactory; -use TYPO3\CMS\Extbase\Object\ObjectManagerInterface; /** * Analyzes the raw request and delivers a request handler which can handle it. @@ -25,9 +26,9 @@ use TYPO3\CMS\Extbase\Object\ObjectManagerInterface; class RequestHandlerResolver { /** - * @var \TYPO3\CMS\Extbase\Object\ObjectManagerInterface + * @var ContainerInterface */ - protected $objectManager; + private $container; /** * @var \TYPO3\CMS\Extbase\Configuration\RequestHandlersConfiguration @@ -35,18 +36,13 @@ class RequestHandlerResolver private $requestHandlersConfiguration; /** - * @param \TYPO3\CMS\Extbase\Object\ObjectManagerInterface $objectManager - */ - public function injectObjectManager(ObjectManagerInterface $objectManager) - { - $this->objectManager = $objectManager; - } - - /** + * @param ContainerInterface $container * @param RequestHandlersConfigurationFactory $requestHandlersConfigurationFactory + * @throws \TYPO3\CMS\Extbase\Configuration\Exception */ - public function __construct(RequestHandlersConfigurationFactory $requestHandlersConfigurationFactory) + public function __construct(ContainerInterface $container, RequestHandlersConfigurationFactory $requestHandlersConfigurationFactory) { + $this->container = $container; $this->requestHandlersConfiguration = $requestHandlersConfigurationFactory->createRequestHandlersConfiguration(); } @@ -62,7 +58,10 @@ class RequestHandlerResolver $suitableRequestHandlers = []; foreach ($this->requestHandlersConfiguration->getRegisteredRequestHandlers() as $requestHandlerClassName) { /** @var RequestHandlerInterface $requestHandler */ - $requestHandler = $this->objectManager->get($requestHandlerClassName); + $requestHandler = $this->container->has($requestHandlerClassName) + ? $this->container->get($requestHandlerClassName) + : GeneralUtility::makeInstance($requestHandlerClassName) + ; if ($requestHandler->canHandleRequest()) { $priority = $requestHandler->getPriority(); if (isset($suitableRequestHandlers[$priority])) { -- GitLab