1.. include:: ../../Includes.txt
2
3=============================================================
4Breaking: #88638 - Streamlined SoftRefParser reference lookup
5=============================================================
6
7See :issue:`88638`
8
9Description
10===========
11
12The Soft Reference Parser is a registry to allow to find parsers (PHP Objects),
13for a given Parser Type (images, internal links, email links) to keep track of
14referenced records within arbitrary data (e.g. RTE text-fields).
15
16Parsers can be added or overridden via the hook registry
17:php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['GLOBAL']['softRefParser'][$parserType]`.
18
19Previously, the API method for fetching the proper parsers
20:php:`TYPO3\CMS\Backend\Utility\BackendUtility::softRefParserObj()` kept a runtime cache of created objects
21per type within a global PHP array (:php:`T3_VAR`). This allowed to create objects
22only once, even if there are multiple necessary parts required.
23
24TYPO3's Core SoftRefParser does not keep any state, but the class now has a
25:php:`SingletonInterface`, which means that the object is now a re-used object
26as before.
27
28
29Impact
30======
31
32Calling the SoftRefParser factory method does not keep state of the parser
33objects via :php:`$GLOBALS['T3_VAR']['softRefParser']` anymore.
34
35Instead, :php:`SingletonInterface` is recommended for re-using SoftRefParser objects
36if they need to keep state.
37
38
39Affected Installations
40======================
41
42TYPO3 installations with extensions that use the API with custom parsers,
43or the global variable directly.
44
45
46Migration
47=========
48
49Replace the global variable access via the API call to :php:`TYPO3\CMS\Backend\Utility\BackendUtility`, if this
50is applicable.
51
52If a custom parser is in use, it is recommended to evaluate whether it contains
53re-usable data and switch to :php:`SingletonInterface` instead.
54
55.. index:: Backend, FullyScanned