Deprecation: #100053 - GeneralUtility::_GP()

See forge#100053

Description

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

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

Impact

Calling the method from PHP code will log a PHP deprecation level entry, the method will be removed with TYPO3 v13.

Affected installations

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

The extension scanner will find usages with a strong match.

Migration

GeneralUtility::_GP() is a helper method that retrieves incoming HTTP GET query arguments and POST body 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::_GP('tx_scheduler');

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