Dieser Artikel besteht aus mehreren Unterseiten:
Einführung
Neue Funktionen
Breaking Changes
Deprecations
Fluid
TCA
FormEngine
DataHandler
Extbase
TypoScript
Extension-Infrastruktur
JavaScript
Systemkonfiguration
Doctrine / DBAL
API
Datei-System / Routing
EXT:indexed_search
Im Gegensatz zu Breaking Changes sind Deprecations "Willensbekundungen" zu einem kommenden Breaking Change. Deprecations können in der Version, wo sie eingeführt werden (dies geht bis zur LTS-Veröffentlichung!), noch ignoriert werden. Die Warnhinweise können optional in einem Logfile angesammelt werden, das erfahrungsgemäß aber sehr groß wird und im Produktivbetrieb unbedingt deaktiviert sein sollte. Das heißt: Eine Deprecation tut erst mal nicht weh und man kann sie "wegblinzeln".
Die Fragen, die man sich bei jeder Deprecation stellen sollte:
Diesen Fragen stellen wir uns auch bei jeder Änderung im Projekt-Alltag. Manche Deprecations kann man aufgrund von Deadlines oder der Komplexität einfach nicht realistisch sofort angehen und muss die Anpassung davon auf die nächste Hauptversion verschieben. Dies sollte man dann rechtzeitig in die Budgetplanung aufnehmen, denn am Ende ist alles ein Spiel auf Zeit und Geld. Ein Investitionsstau im laufenden Betrieb kann sich später zu kostspieligen "großen" Updates hochschaukeln, oder gar notwendige Sicherheitsupdates blockieren.
Die folgenden Deprecations sind sortiert nach "Größe des Anpassungsaufwands". Glücklicherweise sind viele Deprecations auch "nur" das Abschneiden von alten Zöpfen, die man in modernen Projekten sowieso nicht mehr verwendet.
Die wichtigsten ⚠️Deprecations sind:
Legende:
⚠️- Aufpassen/Merken!
🐣 - Sehr einfaches suchen+ersetzen
✍️ - Relative einfaches ersetzen, aber etwas mehr Transferarbeit nötig
🧠 - Aufwändig
🕳️ - Entfällt ohne Ersatz
RenderingContext->getRequest()
(primär in ViewHelpern) soll zugunsten vom Auslesen von Request-Attributen (ServerRequestInterface) nicht mehr verwendet werden. Die beschriebene Migration ist wenig aufwändig. - [Changelog]AbstractTagBasedViewHelper->registerUniversalTagAttributes()
und AbstractTagBasedViewHelper->registerTagAttribute()
sollen zugunsten von automatisch registrierten $this->additionalArguments
nicht mehr genutzt werden. - [Changelog]\TYPO3\CMS\Fluid\View\TemplatePaths->fillDefaultsByPackageName()
soll zugunsten der konkreten setTemplateRootPaths / setLayoutRootPaths / setPartialRootPaths (oder der ViewFactory) nicht mehr genutzt werden - [Changelog]AbstractViewHelper->overrideArgument()
soll zugunsten von AbstractViewHelper->registerArgument()
nicht mehr verwendet werden - [Changelog]BackendUtility::getTcaFieldConfiguration
soll zugunsten von direktem TCA Zugriff (oder TCA Schema Factory) vermieden werden - [Changelog]MM_hasUidField
soll nicht mehr genutzt werden, SQL-Spalten werden automatisch erzeugt - [Changelog]\TYPO3\CMS\Core\DataHandling\DataHandler->checkStoredRecords
und \TYPO3\CMS\Core\DataHandling\DataHandler->checkStoredRecords_loose
werden nicht mehr ausgewertet - [Changelog]TypoScriptFrontendController->addCacheTags()
und TypoScriptFrontendController->getPageCacheTags()
sollen zugunsten von $request->getAttribute('frontend.cache.collector')
nicht mehr genutzt werden - [Changelog]ExtensionManagementUtility::addPageTSConfig()
und ExtensionManagementUtility::addUserTSConfig()
sollen nicht mehr genutzt werden, ersetzt durch automatisches Laden von page.tsconfig und user.tsconfig. - [Changelog1, Changelog2]ExtensionManagementUtility::getExtensionIcon()
soll zugunsten von \TYPO3\CMS\Core\Package\Package->getPackageIcon
nicht mehr verwendet werden - [Changelog]\TYPO3\CMS\Core\Imaging\IconRegistry
soll zugunsten der Datei Configuration/Icons.php nicht mehr genutzt werden. - [Changelog]ExtensionManagementUtility::addPItoST43
soll zugunsten von einer angepassten Nutzung von \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScript()
nicht mehr verwendet werden. - [Changelog]Utility.updateQueryStringParameter()
soll zugunsten von nativem JavaScript `URLSearchParams` nicht mehr verwendet werden - [Changelog]$GLOBALS['TYPO3_CONF_VARS']['FE']['addRootLineFields']
soll nicht mehr verwendet werden, da nun alle Felder immer vollständig ausgewertet werden - [Changelog]\TYPO3\CMS\Core\Domain\Repository\PageRepository->enableFields()
soll zugunsten von \TYPO3\CMS\Core\Domain\Repository\PageRepository->getDefaultConstraints()
nicht mehr verwendet werden - [Changelog]#[Controller]
soll zugunsten von #[AsController]
nicht mehr genutzt werden - [Changelog]BackendUserAuthentication::returnWebmounts()
soll zugunsten von BackendUserAuthentication::getWebmounts()
nicht mehr verwendet werden - [Changelog]\TYPO3\CMS\Core\DataHandling\SlugEnricher
soll nicht mehr verwendet werden - [Changelog]BackendUtility::thumbCode()
soll nicht mehr verwendet werden. - [Changelog]MathUtility::convertToPositiveInteger()
soll nicht mehr verwendet werden (stattdessen native PHP Methoden)TYPO3\CMS\Backend\View\BackendLayout\DataProviderContext
wurde in ein Data Objekt umgewandelt, alle get/set Methoden sollen zugunsten von Public Constructor Property Promotion (PCPP) nun im Konstruktur übertragen werden. Dies ist relevant für eigene implementierte BackendLayoutDataProvider. - [Changelog]DiffUtility->makeDiffDisplay()
soll zugunsten von DiffUtility->diff()
nicht mehr verwendet werden; die Property $stripTags
soll nicht mehr genutzt werden. - [Changelog]\TYPO3\CMS\Install\Updates\AbstractDownloadExtensionUpdate
-> \TYPO3\CMS\Extensionmanager\Updates\AbstractDownloadExtensionUpdate
\TYPO3\CMS\Install\Updates\ExtensionModel
-> \TYPO3\CMS\Extensionmanager\Updates\ExtensionModel
['TYPO3\CMS\Recordlist\RecordList\DatabaseRecordList']['customizeCsvHeader']
['TYPO3\CMS\Recordlist\RecordList\DatabaseRecordList']['customizeCsvRow']
ContentObjectOneSourceCollectionHookInterface
ContentObjectPostInitHookInterface
ContentObjectGetDataHookInterface
ContentObjectStdWrapHookInterface
ContentObjectGetImageResourceHookInterface
PageRepositoryInitHookInterface
\TYPO3\CMS\Extbase\Security\Cryptography\HashService
und \TYPO3\CMS\Core\Utility\GeneralUtility::hmac()
soll zugunsten von \TYPO3\CMS\Core\Crypto\HashService
nicht mehr genutzt werden - [Changelog1 Changelog2]🐣 ENUMs
\TYPO3\CMS\Core\Type\Icon\IconState
soll zugunsten von \TYPO3\CMS\Core\Imaging\IconState
nicht mehr genutzt werden - [Changelog]\TYPO3\CMS\Core\Resource\DuplicationBehavior
soll zugunsten von \TYPO3\CMS\Core\Resource\Enum\DuplicationBehavior
nicht mehr verwendet werden - [Changelog]\TYPO3\CMS\Core\Type\Enumeration
soll zugunsten von nativen ENUMs nicht mehr verwendet werden - [Changelog]\TYPO3\CMS\Backend\Toolbar\Enumeration\InformationStatus
soll anstelle von Konstanten die direkten ENUMs verwenden - [Changelog]\TYPO3\CMS\Core\Versioning\VersionState
soll zugunsten von direkten ENUMs nicht mehr verwendet werden - [Changelog]\TYPO3\CMS\Core\Imaging\Icon
Klassenkonstanten sollen zugunsten von \TYPO3\CMS\Core\Imaging\Icon
und \TYPO3\CMS\Core\Imaging\IconFactory
nicht mehr verwendet werden - [Changelog]AbstractFile::FILETYPE_
* Konstanten sollen zugunsten von den ENUMs in \TYPO3\CMS\Core\Resource\FileType
nicht mehr verwendet werden - [Changelog]/typo3/index.php
ist zugunsten einer konfigurierbaren URL nicht mehr vorgesehen. Sämtliches Routing erfolgt über die /index.php (abseits von /typo3/install.php bei der Installation). - [Changelog]TYPO3\CMS\IndexedSearch\Dto\IndexingDataAsString
zurückliefern - [Changelog]Unsere Agentur, die Faktor E GmbH, ist an der TYPO3-Fortentwicklung involviert und mit Garvin Hicking beschäftigen wir einen Mitarbeiter, der im Core-Team als Framework-Merger aktiv mitarbeitet und uns einen zeitnahen Einblick in das Entwicklungsgeschehen gibt. Unser gesamtes erfahrenes Team mit mehreren zertifizierten Personen (Consultant/Integrator/ Developer/Editor) führt für Sie gerne TYPO3-Updates oder neue Projekte durch: Kontaktieren Sie uns!