Breaking: #67212 - Discard TYPO3 class loader¶
See forge#67212
Description¶
The former TYPO3 class loader has been removed in favor of the composer class loader.
Impact¶
ext_autoload.php files are not evaluated any more. Instead all class files are registered automatically during extension installation and written into a class map file. This class map file is not changed during regular requests, but only if the extension list changes (by using the Extension Manager).
These class information files are located in the typo3temp/
directory and will also be automatically
created if they do not exist.
Non-namespaced classes with Tx_
naming convention like Tx_
are only resolved through
the aforementioned class map, but not dynamically. This means that extension authors need to re-generate the class map
files when introducing new classes. Thus it is highly recommended to use a Classes folder with PSR-4 standard class
files in there.
When installing TYPO3 with composer, it also means that all extensions need to bring their own composer.
file with class loading information or the class loading information of all extensions need to be specified in the root
composer.
for class loading to work properly.
Affected Installations¶
All installations are affected.
Migration¶
No migration is needed during upgrade if TYPO3 is installed in the classic way. If TYPO3 is installed in a distribution via composer, missing class loading information need to be provided in root composer.json for all extensions which do not bring their own composer.json manifest.
{
"autoload": {
"psr-4": {
"GeorgRinger\\News\\": "typo3conf/ext/news/Classes/",
"MyAwesomeNamespace\\IncrediExt\\": "typo3conf/ext/incredible_extension/Resources/PHP/Libraries/lib/"
}
}
}