diff --git a/typo3/sysext/frontend/Classes/Authentication/FrontendUserAuthentication.php b/typo3/sysext/frontend/Classes/Authentication/FrontendUserAuthentication.php
index 04180ba65853cd38dc22f105cc930afb85ed0248..2c044fd24a7b43b672b74bfbff19e4cd5ef14434 100644
--- a/typo3/sysext/frontend/Classes/Authentication/FrontendUserAuthentication.php
+++ b/typo3/sysext/frontend/Classes/Authentication/FrontendUserAuthentication.php
@@ -267,7 +267,7 @@ class FrontendUserAuthentication extends AbstractUserAuthentication
      *
      * @param ServerRequestInterface|null $request (will become a requirement in v12.0)
      */
-    public function fetchGroupData(ServerRequestInterface $request = null)
+    public function fetchGroupData(?ServerRequestInterface $request = null)
     {
         $this->TSdataArray = [];
         $this->userTS = [];
diff --git a/typo3/sysext/frontend/Classes/Configuration/TypoScript/ConditionMatching/ConditionMatcher.php b/typo3/sysext/frontend/Classes/Configuration/TypoScript/ConditionMatching/ConditionMatcher.php
index 17640efb384f9634254bcc25424215a6ead86375..c20f1a75608ac110690f12f9a3d1ade83faa12af 100644
--- a/typo3/sysext/frontend/Classes/Configuration/TypoScript/ConditionMatching/ConditionMatcher.php
+++ b/typo3/sysext/frontend/Classes/Configuration/TypoScript/ConditionMatching/ConditionMatcher.php
@@ -47,7 +47,7 @@ class ConditionMatcher extends AbstractConditionMatcher
      * @param array|null $rootLine
      * @param array<int, array<string, mixed>>|null $fullRootLine
      */
-    public function __construct(Context $context = null, int $pageId = null, array $rootLine = null, array $fullRootLine = null)
+    public function __construct(?Context $context = null, ?int $pageId = null, ?array $rootLine = null, ?array $fullRootLine = null)
     {
         $this->context = $context ?? GeneralUtility::makeInstance(Context::class);
         $this->pageId = $pageId;
diff --git a/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php b/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php
index f03324cc23946babbfea27456d8ccdacc683a8f5..65df510b96a6af02a63c722262c5a8237377c91d 100644
--- a/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php
+++ b/typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php
@@ -473,7 +473,7 @@ class ContentObjectRenderer implements LoggerAwareInterface
      * @param TypoScriptFrontendController $typoScriptFrontendController
      * @param ContainerInterface $container
      */
-    public function __construct(TypoScriptFrontendController $typoScriptFrontendController = null, ContainerInterface $container = null)
+    public function __construct(?TypoScriptFrontendController $typoScriptFrontendController = null, ?ContainerInterface $container = null)
     {
         $this->typoScriptFrontendController = $typoScriptFrontendController;
         $this->contentObjectClassMap = $GLOBALS['TYPO3_CONF_VARS']['FE']['ContentObjects'] ?? [];
diff --git a/typo3/sysext/frontend/Classes/ContentObject/Exception/ExceptionHandlerInterface.php b/typo3/sysext/frontend/Classes/ContentObject/Exception/ExceptionHandlerInterface.php
index 6bf2143de5a37df968cd1bf1f3eed5234fdac718..cb899f0bbf420e0cc961a53addf446c4fd9a5bda 100644
--- a/typo3/sysext/frontend/Classes/ContentObject/Exception/ExceptionHandlerInterface.php
+++ b/typo3/sysext/frontend/Classes/ContentObject/Exception/ExceptionHandlerInterface.php
@@ -32,7 +32,7 @@ interface ExceptionHandlerInterface
      * @param array $contentObjectConfiguration
      * @return string
      */
-    public function handle(\Exception $exception, AbstractContentObject $contentObject = null, $contentObjectConfiguration = []);
+    public function handle(\Exception $exception, ?AbstractContentObject $contentObject = null, $contentObjectConfiguration = []);
 
     /**
      * @todo Will be activated in TYPO3 v12
diff --git a/typo3/sysext/frontend/Classes/ContentObject/Exception/ProductionExceptionHandler.php b/typo3/sysext/frontend/Classes/ContentObject/Exception/ProductionExceptionHandler.php
index 85d202fd2526c0a636aa2cd5a63d351327be4536..860ad6c76d5f597beea9a595012b09bf9ec959ea 100644
--- a/typo3/sysext/frontend/Classes/ContentObject/Exception/ProductionExceptionHandler.php
+++ b/typo3/sysext/frontend/Classes/ContentObject/Exception/ProductionExceptionHandler.php
@@ -59,7 +59,7 @@ class ProductionExceptionHandler implements ExceptionHandlerInterface
      * @return string
      * @throws \Exception
      */
-    public function handle(\Exception $exception, AbstractContentObject $contentObject = null, $contentObjectConfiguration = []): string
+    public function handle(\Exception $exception, ?AbstractContentObject $contentObject = null, $contentObjectConfiguration = []): string
     {
         // ImmediateResponseException (and the derived PropagateResponseException) should work similar to
         // exit / die and must therefore not be handled by this ExceptionHandler.
diff --git a/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php b/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php
index a9c1bdf908e6baed24ba5a681c5060e045ad65e4..4981ae5a751c8aac559b22f54e2ebfb1cfa324aa 100644
--- a/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php
+++ b/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php
@@ -739,7 +739,7 @@ class TypoScriptFrontendController implements LoggerAwareInterface
      *
      * @param ServerRequestInterface|null $request
      */
-    public function determineId(ServerRequestInterface $request = null)
+    public function determineId(?ServerRequestInterface $request = null)
     {
         $request = $request ?? $GLOBALS['TYPO3_REQUEST'] ?? ServerRequestFactory::fromGlobals();
         // Call pre processing function for id determination
@@ -963,7 +963,7 @@ class TypoScriptFrontendController implements LoggerAwareInterface
      * @internal
      * @param ServerRequestInterface|null $request
      */
-    protected function fetch_the_id(ServerRequestInterface $request = null)
+    protected function fetch_the_id(?ServerRequestInterface $request = null)
     {
         $request = $request ?? $GLOBALS['TYPO3_REQUEST'] ?? ServerRequestFactory::fromGlobals();
         $timeTracker = $this->getTimeTracker();
@@ -1464,7 +1464,7 @@ class TypoScriptFrontendController implements LoggerAwareInterface
      * @param string $failureReasonCode the error code to be attached (optional), see PageAccessFailureReasons list for details
      * @return array Summary of why page access was not allowed.
      */
-    public function getPageAccessFailureReasons(string $failureReasonCode = null)
+    public function getPageAccessFailureReasons(?string $failureReasonCode = null)
     {
         $output = [];
         if ($failureReasonCode) {
@@ -1577,7 +1577,7 @@ class TypoScriptFrontendController implements LoggerAwareInterface
      * @param ServerRequestInterface|null $request if given this is used to determine values in headerNoCache() instead of the superglobal $_SERVER
      * @throws \TYPO3\CMS\Core\Cache\Exception\NoSuchCacheException
      */
-    public function getFromCache(ServerRequestInterface $request = null)
+    public function getFromCache(?ServerRequestInterface $request = null)
     {
         // clearing the content-variable, which will hold the pagecontent
         $this->content = '';
@@ -1730,7 +1730,7 @@ class TypoScriptFrontendController implements LoggerAwareInterface
      * @param ServerRequestInterface|null $request
      * @return bool If shift-reload in client browser has been clicked, disable getting cached page (and regenerate it).
      */
-    public function headerNoCache(ServerRequestInterface $request = null)
+    public function headerNoCache(?ServerRequestInterface $request = null)
     {
         if ($request instanceof ServerRequestInterface) {
             $serverParams = $request->getServerParams();
@@ -1830,7 +1830,7 @@ class TypoScriptFrontendController implements LoggerAwareInterface
      * @throws \TYPO3\CMS\Core\Error\Http\InternalServerErrorException
      * @throws \TYPO3\CMS\Core\Error\Http\ServiceUnavailableException
      */
-    public function getConfigArray(ServerRequestInterface $request = null)
+    public function getConfigArray(?ServerRequestInterface $request = null)
     {
         $request = $request ?? $GLOBALS['TYPO3_REQUEST'] ?? ServerRequestFactory::fromGlobals();
         if (!$this->tmpl instanceof TemplateService) {
@@ -2759,7 +2759,7 @@ class TypoScriptFrontendController implements LoggerAwareInterface
      *
      * @param ServerRequestInterface|null $request
      */
-    public function INTincScript(ServerRequestInterface $request = null)
+    public function INTincScript(?ServerRequestInterface $request = null)
     {
         $request = $request ?? $GLOBALS['TYPO3_REQUEST'];
         $this->additionalHeaderData = $this->config['INTincScript_ext']['additionalHeaderData'] ?? [];
@@ -3027,7 +3027,7 @@ class TypoScriptFrontendController implements LoggerAwareInterface
      *
      * @param ServerRequestInterface|null $request
      */
-    public function newCObj(ServerRequestInterface $request = null)
+    public function newCObj(?ServerRequestInterface $request = null)
     {
         $this->cObj = GeneralUtility::makeInstance(ContentObjectRenderer::class, $this);
         $this->cObj->start($this->page, 'pages', $request);
diff --git a/typo3/sysext/frontend/Classes/DataProcessing/SiteProcessor.php b/typo3/sysext/frontend/Classes/DataProcessing/SiteProcessor.php
index 9602415d01ee4c1b05cf83de37ab51c41bea9148..56def4d9ba3d83dc9afd35c859fc75bbb7ffe6ad 100644
--- a/typo3/sysext/frontend/Classes/DataProcessing/SiteProcessor.php
+++ b/typo3/sysext/frontend/Classes/DataProcessing/SiteProcessor.php
@@ -38,7 +38,7 @@ class SiteProcessor implements DataProcessorInterface
 {
     protected ?TypoScriptFrontendController $tsfe;
 
-    public function __construct(TypoScriptFrontendController $tsfe = null)
+    public function __construct(?TypoScriptFrontendController $tsfe = null)
     {
         $this->tsfe = $tsfe ?? $GLOBALS['TSFE'] ?? null;
     }
diff --git a/typo3/sysext/frontend/Classes/Middleware/SiteBaseRedirectResolver.php b/typo3/sysext/frontend/Classes/Middleware/SiteBaseRedirectResolver.php
index 825dd95d61058b15a2ddf0fe6ed5e4cf189771ca..97100782e0134f3936bd49d47d01a01a7d93ff0e 100644
--- a/typo3/sysext/frontend/Classes/Middleware/SiteBaseRedirectResolver.php
+++ b/typo3/sysext/frontend/Classes/Middleware/SiteBaseRedirectResolver.php
@@ -101,7 +101,7 @@ class SiteBaseRedirectResolver implements MiddlewareInterface
      * @param BackendUserAuthentication|null $user
      * @return bool
      */
-    protected function isLanguageEnabled(SiteLanguage $language, BackendUserAuthentication $user = null): bool
+    protected function isLanguageEnabled(SiteLanguage $language, ?BackendUserAuthentication $user = null): bool
     {
         // language is hidden, check if a possible backend user is allowed to access the language
         if ($language->enabled() || ($user instanceof BackendUserAuthentication && $user->checkLanguageAccess($language->getLanguageId()))) {
diff --git a/typo3/sysext/frontend/Classes/Page/CacheHashCalculator.php b/typo3/sysext/frontend/Classes/Page/CacheHashCalculator.php
index fec164706cdc401b63634674f938521e55d46740..cc096ddda96a325553792c2268934aefbac0ffd4 100644
--- a/typo3/sysext/frontend/Classes/Page/CacheHashCalculator.php
+++ b/typo3/sysext/frontend/Classes/Page/CacheHashCalculator.php
@@ -33,7 +33,7 @@ class CacheHashCalculator implements SingletonInterface
      *
      * @param CacheHashConfiguration|null $configuration
      */
-    public function __construct(CacheHashConfiguration $configuration = null)
+    public function __construct(?CacheHashConfiguration $configuration = null)
     {
         $this->configuration = $configuration ?? GeneralUtility::makeInstance(CacheHashConfiguration::class);
     }
diff --git a/typo3/sysext/frontend/Classes/Page/CacheHashConfiguration.php b/typo3/sysext/frontend/Classes/Page/CacheHashConfiguration.php
index 09721b1bc836431c78cdb1184b7f3e97d9cb089f..b2d1643d24d6c2e8c0714c97ea846e7850a9c6c0 100644
--- a/typo3/sysext/frontend/Classes/Page/CacheHashConfiguration.php
+++ b/typo3/sysext/frontend/Classes/Page/CacheHashConfiguration.php
@@ -67,7 +67,7 @@ class CacheHashConfiguration
      */
     protected $data = [];
 
-    public function __construct(array $configuration = null)
+    public function __construct(?array $configuration = null)
     {
         $configuration = $configuration ?? $GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash'] ?? [];
         $this->configuration = array_filter($configuration, [$this, 'isAllowedProperty'], ARRAY_FILTER_USE_KEY);
diff --git a/typo3/sysext/frontend/Classes/Plugin/AbstractPlugin.php b/typo3/sysext/frontend/Classes/Plugin/AbstractPlugin.php
index ac7a6cca3ef4b938b7e836b2af6eebb8ae121f8e..1a2b84cc4205895cda34c75b120adfe91a2ee97e 100644
--- a/typo3/sysext/frontend/Classes/Plugin/AbstractPlugin.php
+++ b/typo3/sysext/frontend/Classes/Plugin/AbstractPlugin.php
@@ -232,7 +232,7 @@ class AbstractPlugin
      * @param null $_ unused,
      * @param TypoScriptFrontendController $frontendController
      */
-    public function __construct($_ = null, TypoScriptFrontendController $frontendController = null)
+    public function __construct($_ = null, ?TypoScriptFrontendController $frontendController = null)
     {
         $this->frontendController = $frontendController ?: $GLOBALS['TSFE'];
         $this->templateService = GeneralUtility::makeInstance(MarkerBasedTemplateService::class);
diff --git a/typo3/sysext/frontend/Classes/Typolink/AbstractTypolinkBuilder.php b/typo3/sysext/frontend/Classes/Typolink/AbstractTypolinkBuilder.php
index 0f080ce693c1b9ca9bf133d9fbd41d0f4b3f0640..e34e85430f4301ba88a1a9998fb5c17a3f668bb4 100644
--- a/typo3/sysext/frontend/Classes/Typolink/AbstractTypolinkBuilder.php
+++ b/typo3/sysext/frontend/Classes/Typolink/AbstractTypolinkBuilder.php
@@ -55,7 +55,7 @@ abstract class AbstractTypolinkBuilder
      * @param ContentObjectRenderer $contentObjectRenderer
      * @param TypoScriptFrontendController $typoScriptFrontendController
      */
-    public function __construct(ContentObjectRenderer $contentObjectRenderer, TypoScriptFrontendController $typoScriptFrontendController = null)
+    public function __construct(ContentObjectRenderer $contentObjectRenderer, ?TypoScriptFrontendController $typoScriptFrontendController = null)
     {
         $this->contentObjectRenderer = $contentObjectRenderer;
         $this->typoScriptFrontendController = $typoScriptFrontendController ?? $GLOBALS['TSFE'] ?? null;
diff --git a/typo3/sysext/frontend/Classes/Typolink/PageLinkBuilder.php b/typo3/sysext/frontend/Classes/Typolink/PageLinkBuilder.php
index 9706abda2bac75aff9e0ef28c20479e78cdf08a3..17932a52da9dcb1eeb90f25961d821dfce916534 100644
--- a/typo3/sysext/frontend/Classes/Typolink/PageLinkBuilder.php
+++ b/typo3/sysext/frontend/Classes/Typolink/PageLinkBuilder.php
@@ -769,7 +769,7 @@ class PageLinkBuilder extends AbstractTypolinkBuilder
      * Builds PageRepository instance without depending on global context, e.g.
      * not automatically overlaying records based on current request language.
      */
-    protected function buildPageRepository(LanguageAspect $languageAspect = null): PageRepository
+    protected function buildPageRepository(?LanguageAspect $languageAspect = null): PageRepository
     {
         // clone global context object (singleton)
         $context = clone GeneralUtility::makeInstance(Context::class);
diff --git a/typo3/sysext/frontend/Classes/Typolink/UnableToLinkException.php b/typo3/sysext/frontend/Classes/Typolink/UnableToLinkException.php
index 12d7d5ad0c40cdfd97b0d3f9f506df0373ca1b47..97794ff923c27f3a23b649ef66aad71630a82c25 100644
--- a/typo3/sysext/frontend/Classes/Typolink/UnableToLinkException.php
+++ b/typo3/sysext/frontend/Classes/Typolink/UnableToLinkException.php
@@ -37,7 +37,7 @@ class UnableToLinkException extends Exception
      * @param \Throwable $previous [optional] The previous throwable used for the exception chaining.
      * @param LinkResult|string $linkText [optional]
      */
-    public function __construct($message = '', $code = 0, \Throwable $previous = null, $linkText = '')
+    public function __construct($message = '', $code = 0, ?\Throwable $previous = null, $linkText = '')
     {
         parent::__construct($message, $code, $previous);
         if ($linkText instanceof LinkResult) {