Feature: #89718 - Unified PHP API for loading PageTSconfig

See forge#89718

Description

Most parts of TYPO3 Core share duplicate or similar functionality in Frontend or Backend context. One of that is the loading and parsing of PageTSconfig, the configuration syntax for various places in TYPO3 Backend, which can also be used to define Backend Layouts.

In order to streamline this functionality, the loading process of gathering all data from a rootline of a page is now simplified in a new PageTsLoader PHP class.

Additionally, parsing, and additional matching against conditions, which was added later-on in 2009 and put on top, is now separated properly, building a truly separation of concerns for compiling and parsing TSconfig. This is put in the PageTsConfigParser PHP class.

Impact

When there is the necessity for fetching and loading PageTSconfig, it is recommended for extension developers to make use of both new PHP classes:

  • TYPO3\CMS\Core\Configuration\Loader\PageTsConfigLoader

  • TYPO3\CMS\Core\Configuration\Parser\PageTsConfigParser

Usages for fetching all available PageTS in one large string (not parsed yet):

$loader = GeneralUtility::makeInstance(PageTsConfigLoader::class);
$tsConfigString = $loader->load($rootLine);

The string can then be put in proper TSconfig array syntax:

$parser = GeneralUtility::makeInstance(
    PageTsConfigParser::class,
    $typoScriptParser,
    $hashCache
);
$pagesTSconfig = $parser->parse(
    $tsConfigString,
    $conditionMatcher
);

Extension developers should rely on this syntax rather than on $GLOBALS['TSFE']->getPagesTSconfig() or BackendUtility::getPagesTsConfig().