[TASK] Use ServerRequestInterface in EditDocumentController
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Documentation / Changelog / master / Deprecation-84195-ProtectedMethodsAndPropertiesInEditDocumentController.rst
1 .. include:: ../../Includes.txt
2
3 ================================================================================
4 Deprecation: #84195 - Protected methods and properties in EditDocumentController
5 ================================================================================
6
7 See :issue:`84195`
8
9 Description
10 ===========
11
12 This file is about third party usage (consumer that call the class as well as
13 signals or hooks depending on it) of :php:`TYPO3\CMS\Backend\Controller\EditDocumentController`.
14
15 A series of class properties has been set to protected.
16 They will throw deprecation warnings if called public from outside:
17
18 * :php:`$editconf`
19 * :php:`$defVals`
20 * :php:`$overrideVals`
21 * :php:`$columnsOnly`
22 * :php:`$returnUrl`
23 * :php:`$closeDoc`
24 * :php:`$doSave`
25 * :php:`$returnEditConf`
26 * [not scanned] :php:`$uc`
27 * :php:`$retUrl`
28 * :php:`$R_URL_parts`
29 * :php:`$R_URL_getvars`
30 * :php:`$storeArray`
31 * :php:`$storeUrl`
32 * :php:`$storeUrlMd5`
33 * :php:`$docDat`
34 * :php:`$docHandler`
35 * [not scanned] :php:`$cmd`
36 * [not scanned] :php:`$mirror`
37 * :php:`$cacheCmd`
38 * :php:`$redirect`
39 * :php:`$returnNewPageId`
40 * :php:`$popViewId`
41 * :php:`$popViewId_addParams`
42 * :php:`$viewUrl`
43 * :php:`$recTitle`
44 * :php:`$noView`
45 * :php:`$MCONF`
46 * [not scanned] :php:`$doc`
47 * :php:`$perms_clause`
48 * [not scanned] :php:`$template`
49 * :php:`$content`
50 * :php:`$R_URI`
51 * :php:`$pageinfo`
52 * :php:`$storeTitle`
53 * :php:`$firstEl`
54 * :php:`$errorC`
55 * :php:`$newC`
56 * :php:`$viewId`
57 * :php:`$viewId_addParams`
58 * :php:`$modTSconfig`
59 * :php:`$dontStoreDocumentRef`
60
61 Some properties are set to :php:`@internal` and may vanish or be set to protected in v10 without further notice:
62
63 * [not scanned] :php:`$data`
64 * :php:`$elementsData`
65
66 All methods not used as entry points by :php:`TYPO3\CMS\Backend\Http\RouteDispatcher` will be
67 removed or set to protected in v10 and throw deprecation warnings if used from a third party:
68
69 * :php:`preInit()`
70 * :php:`doProcessData()`
71 * :php:`processData()`
72 * [not scanned] :php:`init()`
73 * [note scanned] :php:`main()`
74 * :php:`makeEditForm()`
75 * :php:`compileForm()`
76 * :php:`shortCutLink()`
77 * :php:`openInNewWindowLink()`
78 * :php:`languageSwitch()`
79 * :php:`localizationRedirect()`
80 * :php:`getLanguages()`
81 * :php:`fixWSversioningInEditConf()`
82 * :php:`getRecordForEdit()`
83 * :php:`compileStoreDat()`
84 * :php:`getNewIconMode()`
85 * :php:`closeDocument()`
86 * :php:`setDocument()`
87
88 Two slots retrieve a parent object that will throw deprecations if properties are read or
89 methods called. They receive a :php:`ServerRequestInterface $request` argument as second
90 argument instead:
91
92 * :php:`TYPO3\CMS\Backend\Controller\EditDocumentController::preInitAfter`
93 * :php:`TYPO3\CMS\Backend\Controller\EditDocumentController::preInit`
94
95
96 Impact
97 ======
98
99 Calling one of the above methods or accessing one of the above properties on an instance of
100 :php:`EditDocumentController` will throw a deprecation warning in v9 and a PHP fatal in v10.
101
102
103 Affected Installations
104 ======================
105
106 The extension scanner will find most usages, but may also find some false positives. The most
107 common property and method names like :php:`$data` are not registered and will not be found
108 if an extension uses that on an instance of :php:`EditDocumenController`. In general all extensions
109 that set properties or call methods except :php:`mainAction()` are affected.
110
111 Installations may alse be affected, if the two signals
112 :php:`TYPO3\CMS\Backend\Controller\EditDocumentController::preInitAfter` and
113 :php:`TYPO3\CMS\Backend\Controller\EditDocumentController::InitAfter`
114 are used and the slot write to or reads from first argument "parent object".
115
116
117 Migration
118 =========
119
120 In general, extensions should not instantiate and re-use controllers of the core. Existing
121 usages should be rewritten to be free of calls like these.
122 Registered slots for the two signals :php:`preInitAfter` and :php:`initAfter` should read
123 (not write!) from new second argument :php:`$request` instead.
124 Slots that currently write to "parent object" should instead be turned into a PSR-15 middleware
125 to manipulate :php:`$request` before :php:`EditDocumentController` is called.
126
127
128 .. index:: Backend, PHP-API, PartiallyScanned