TYPO3 v15 dev-main snapshot ()
This commit is contained in:
+90
@@ -0,0 +1,90 @@
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-97244-1:
|
||||
|
||||
=================================================================
|
||||
Deprecation: #97244 - Direct instantiation of CompositeExpression
|
||||
=================================================================
|
||||
|
||||
See :issue:`97244`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
`doctrine/dbal` `deprecated`_ direct instantiation of :php:`CompositeExpression`
|
||||
in favour of moving forward to an immutable class implementation. Therefore, this
|
||||
has also been deprecated in the Core facade class (:php:`\TYPO3\CMS\Core\Database\Query\Expression\CompositeExpression`),
|
||||
to avoid shifting too far away.
|
||||
|
||||
.. _`deprecated`: https://github.com/doctrine/dbal/commit/7bcd6ebcc2d30ba96cf00d3dca2345d6ae779cf9
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
Instantiating directly with :php:`new CompositeExpression(...)` will trigger a PHP :php:`E_USER_DEPRECATED` error.
|
||||
|
||||
The extension scanner cannot detect direct instantiation of this class.
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
In general, instances with extensions that directly instantiate a composite
|
||||
expression with :php:`new CompositeExpression(...)`.
|
||||
|
||||
The extension scanner will not find and report direct instantiating.
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Instead of directly instantiating a composite expression with the type as
|
||||
the first argument and an array of expressions as the second argument, the new
|
||||
static methods :php:`and(...)` and :php:`or(...)` have to be used.
|
||||
|
||||
.. note::
|
||||
|
||||
The static replacement methods :php:`CompositeExpression::and()`
|
||||
and :php:`CompositeExpression::or()` have already been added in
|
||||
a forward-compatible way in TYPO3 v11. Thus giving extension developers
|
||||
the ability to adopt new methods and still being able to support
|
||||
multiple Core versions without workarounds.
|
||||
|
||||
For example, following code:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
use TYPO3\CMS\Core\Database\Query\Expression\CompositeExpression;
|
||||
|
||||
$compositeExpressionAND = new CompositeExpression(
|
||||
CompositeExpression::TYPE_AND,
|
||||
[
|
||||
// expressions ...
|
||||
]
|
||||
);
|
||||
|
||||
$compositeExpressionOR = new CompositeExpression(
|
||||
CompositeExpression::TYPE_OR,
|
||||
[
|
||||
// expressions ...
|
||||
]
|
||||
);
|
||||
|
||||
should be replaced with:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
use TYPO3\CMS\Core\Database\Query\Expression\CompositeExpression;
|
||||
|
||||
// Note the spread operator
|
||||
$compositeExpressionAND = CompositeExpression::and(
|
||||
...[
|
||||
// expressions ...
|
||||
]
|
||||
);
|
||||
|
||||
$compositeExpressionOR = CompositeExpression::or(
|
||||
...[
|
||||
// expressions ...
|
||||
]
|
||||
);
|
||||
|
||||
.. index:: Database, NotScanned, ext:core
|
||||
Reference in New Issue
Block a user