Deprecation: #102586 - Deprecate simple string connection driver middleware registration
See forge#102586
Description
Using the simple 'identifier' => My
configuration schema to register
Doctrine DBAL middlewares for connection is now deprecated in favour of using a sortable
registration configuration similar to the PSR-15 middleware registration.
Impact
Connection driver middleware registration using a simple string will emit a corresponding message to the deprecation log since TYPO3 v13, but converting it on-the-fly to a valid array configuration.
Affected installations
TYPO3 instances using third-party extension providing custom Doctrine DBAL driver middlewares and having them registered for one or more connections will emit a deprecation message since TYPO3 v13 and either an exception with TYPO3 v14 or an PHP type error.
Migration
Simple driver middleware registration, for example
use MyVendor\MyExt\Doctrine\Driver\MyDriverMiddlewareClass;
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['SecondDatabase']['driverMiddlewares']['driver-middleware-identifier']
= MyDriverMiddlewareClass::class;
needs to be converted to
use MyVendor\MyExt\Doctrine\Driver\MyDriverMiddlewareClass;
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['SecondDatabase']['driverMiddlewares']['driver-middleware-identifier'] = [
'target' => MyDriverMiddlewareClass::class,
'after' => [
'typo3/core/custom-platform-driver-middleware',
],
];
Registration for driver middlewares for TYPO3 v12 and v13
Extension authors providing dual Core support with one extension version can use the
Typo3Version
class to provide the configuration suitable for the Core version
and avoiding the deprecation notice:
use TYPO3\CMS\Core\Information\Typo3Version;
use MyVendor\MyExt\Doctrine\Driver\MyDriverMiddlewareClass;
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['SecondDatabase']['driverMiddlewares']['driver-middleware-identifier']
= ((new Typo3Version)->getMajorVersion() < 13)
? MyDriverMiddlewareClass::class
: [
'target' => MyDriverMiddlewareClass::class,
'after' => [
'typo3/core/custom-platform-driver-middleware',
],
];