[TASK] Deprecate BaseScriptClass and AbstractFunctionModule
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Documentation / Changelog / master / Deprecation-86225-ClassesBaseScriptClassAndAbstractFunctionModule.rst
1 .. include:: ../../Includes.txt
2
3 ========================================================================
4 Deprecation: #86225 - Classes BaseScriptClass and AbstractFunctionModule
5 ========================================================================
6
7 See :issue:`86225`
8
9 Description
10 ===========
11
12 The two classes :php:`TYPO3\CMS\Backend\Module\BaseScriptClass`, also known as
13 :php:`t3lib_SCbase` and :php:`TYPO3\CMS\Backend\Module\AbstractFunctionModule`,
14 also known as :php:`t3lib_extobjbase` have been deprecated and will be removed
15 in TYPO3 v10.
16
17
18 Impact
19 ======
20
21 Using one of the classes will trigger a :php:`E_USER_DEPRECATED` error.
22
23
24 Affected Installations
25 ======================
26
27 The :php:`BaseScriptClass` has been commonly extended by extensions that add own
28 backend modules and did not rely on extbase for that. There is nothing wrong
29 with not using extbase, but most of the methods from :php:`BaseScriptClass`
30 were unused by own extensions and hard to understand, too.
31
32 Class :php:`AbstractFunctionModule` has been extended by some extensions that
33 add own sub modules to the Page -> Info or the Page -> Template view.
34
35 The extension scanner will find possible usages.
36
37 Migration
38 =========
39
40 A migration is often relatively simple: Extensions that extend :php:`BaseScriptClass`
41 should verify which methods and properties are actually used from the parent class. The
42 most simple solution is to just copy those over to the own class and remove the
43 inheritance. It is good practice to at least change their visibility from to :php:`public`
44 to :php:`protected` at the same time if possible.
45
46 Extensions that extend :php:`AbstractFunctionModule` should do the same. The main `info`
47 and `tstemplate` controllers typically only call the methods :php:`init()` and :php:`main()`
48 of those classes as entry points, those need to be kept public.
49
50
51 .. index:: Backend, PHP-API, FullyScanned