Deprecation: #99633 - GeneralUtility::_POST()

See forge#99633

Description

The method \TYPO3\CMS\Core\Utility\GeneralUtility::_POST() has been marked deprecated and should not be used any longer.

Modern code should access GET and POST data from the PSR-7 \Psr\Http\Message\ServerRequestInterface, and should avoid accessing super-globals $_GET and $_POST directly. This will avoid future side-effects when using sub-requests. Some GeneralUtility related helper methods like _POST() violate this, using them is considered a technical debt. They are being phased out.

Impact

Calling the method from PHP code will trigger a PHP deprecation notice.

Affected installations

TYPO3 installations with third-party extensions using GeneralUtility::_POST() are affected. This typically occurs in TYPO3 installations which have been migrated to latest TYPO3 Core versions and haven't been adapted properly yet.

The extension scanner will find usages with a strong match.

Migration

GeneralUtility::_POST() is a helper method that retrieves incoming HTTP body parameters / POST parameters and returns the value.

The same result can be achieved by retrieving arguments from the request object. An instance of the PSR-7 ServerRequestInterface is handed over to controllers by TYPO3 Core's PSR-15 \TYPO3\CMS\Core\Http\RequestHandlerInterface and middleware implementations, and is available in various related scopes like the frontend \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer.

Typical code:

use TYPO3\CMS\Core\Utility\GeneralUtility;

// Before
$value = GeneralUtility::_POST('tx_scheduler');

// After
$value = $request->getParsedBody()['tx_scheduler']);