Files
cms-core/Documentation/Changelog/13.0/Deprecation-102586-DeprecateSimpleStringConnectionDriverMiddlewareRegistration.rst
T

82 lines
2.7 KiB
ReStructuredText

.. include:: /Includes.rst.txt
.. _deprecation-102586-1701536568:
========================================================================================
Deprecation: #102586 - Deprecate simple string connection driver middleware registration
========================================================================================
See :issue:`102586`
Description
===========
Using the simple :php:`'identifier' => MyClass::class,'` 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
.. code-block:: php
use MyVendor\MyExt\Doctrine\Driver\MyDriverMiddlewareClass;
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['SecondDatabase']['driverMiddlewares']['driver-middleware-identifier']
= MyDriverMiddlewareClass::class;
needs to be converted to
.. code-block:: php
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
:php:`Typo3Version` class to provide the configuration suitable for the Core version
and avoiding the deprecation notice:
.. code-block:: php
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',
],
];
.. index:: Database, PHP-API, NotScanned, ext:core