Files
cms-core/Documentation/Changelog/12.3/Feature-100089-IntroduceDoctrineDBALv3drivermiddlewares.rst

42 lines
1.4 KiB
ReStructuredText

.. include:: /Includes.rst.txt
.. _feature-100089-1677961107:
================================================================
Feature: #100089 - Introduce Doctrine DBAL v3 driver middlewares
================================================================
See :issue:`100089`
Description
===========
Since v3, Doctrine DBAL supports adding custom driver middlewares. These
middlewares act as a decorator around the actual `Driver` component.
Subsequently, the `Connection`, `Statement` and `Result` components can be
decorated as well. These middlewares must implement the
:php:`\Doctrine\DBAL\Driver\Middleware` interface.
A common use case would be a middleware for implementing SQL logging capabilities.
For more information on driver middlewares,
see https://www.doctrine-project.org/projects/doctrine-dbal/en/current/reference/architecture.html.
Furthermore, you can look up the implementation of the
:php:`\TYPO3\CMS\Adminpanel\Log\DoctrineSqlLoggingMiddleware` in ext:adminpanel
as an example.
Registering a new driver middleware
===================================
.. code-block:: php
$GLOBALS['TYPO3_CONF_VARS']['DB']['Connections']['Default']['driverMiddlewares']['adminpanel_loggingmiddleware']
= \TYPO3\CMS\Adminpanel\Log\DoctrineSqlLoggingMiddleware::class;
Impact
======
Using custom middlewares allows to enhance the functionality of Doctrine
components.
.. index:: Database, ext:core