[FEATURE] Move expression language handling into EXT:core
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Documentation / Changelog / master / Feature-85828-MoveSymfonyExpressionLanguageHandlingIntoEXTcore.rst
1 .. include:: ../../Includes.txt
2
3 =========================================================================
4 Feature: #85828 - Move symfony expression language handling into EXT:core
5 =========================================================================
6
7 See :issue:`85828`
8
9 Description
10 ===========
11
12 The symfony expression language handling has been moved out of EXT:form into EXT:core.
13 This step was required to make the expression language usable also in other scopes.
14
15 To use the expression language a provider definition is required which implements the :php:`\TYPO3\CMS\Core\ExpressionLanguage\ProviderInterface`.
16 The core comes with a :php:`\TYPO3\CMS\Core\ExpressionLanguage\DefaultProvider` class which can be used directly.
17 For a custom implementation the :php:`\TYPO3\CMS\Core\ExpressionLanguage\AbstractProvider` class can be extended.
18
19 The provider can provide additional variables and expression functions to extend the expression language.
20 For a custom implementation check out the :php:`\TYPO3\CMS\Form\Domain\Condition\ConditionProvider` class.
21
22 A usage example:
23
24 .. code-block:: php
25
26    $provider = GeneralUtility::makeInstance(\TYPO3\CMS\Core\ExpressionLanguage\DefaultProvider::class);
27    $conditionResolver = GeneralUtility::makeInstance(\TYPO3\CMS\Core\ExpressionLanguage\Resolver::class, $provider);
28    $conditionResolver->evaluate('1 < 2'); // result is true
29
30
31 Impact
32 ======
33
34 The expression language can now be used in other scopes and has no dependency to EXT:form
35
36 .. index:: Backend, Frontend, PHP-API, ext:core