TYPO3 Release v13 - Breaking Changes

Inhaltsverzeichnis

Dieser Artikel besteht aus mehreren Unterseiten:

Einführung
Neue Funktionen
Breaking Changes
Deprecations

 

Die Gefahrenzone: "Breaking Changes"

Die größte Furcht bei TYPO3-Updates besteht in den "Breaking Changes". Zum Glück versucht das TYPO3-Team diese so gering wie möglich zu halten, aber in einem lebenden und sich stets verbessernden System ist es unumgänglich, alte Zöpfe auch abschneiden zu müssen und konzeptionelle Irrläufer zu beseitigen.

Breaking Changes dürfen nur in der ".0" Version stattfinden. Wenn man also bei der TYPO3-Entwicklung am Ball bleibt, hat man im Idealfall rund ein Jahr Zeit, sich auf entschiedene Breaking Changes vorzubereiten. Meist werden diese auch sowieso in Form von "Deprecations" in der Vorversion bereits eingeläutet (siehe Folgekapitel).

An dieser Stelle kann man sich darüber freuen, wenn man im vorigen Update alle Deprecations schon behandelt hat, denn ansonsten gilt: Alles was man in der Vorversion nicht bereits angegangen ist, fällt einem nun als "Breaking Change" in den Schoß und ist eine aufzruräumende Altlast.

Breaking Changes sind vom TYPO3 Code-Scanner und auch TYPO3-Rector relativ gut abgedeckt.

Kurzform, die 💣aufwändigsten Änderungen sind:
 

  • Entfernung der v12 Deprecations (üblich: AbstractPlugin, BackendModules, alte TCA-Migrationen, Doctrine Methoden, FlashMessages, Hooks)
  • $GLOBALS['TSFE']
  • Indexed-Search
  • FAL Processors + FAL AbstractRepository
  • GeneralUtility-Methoden Typisierung
  • FlexFormTools
  • Entfernung von jQuery+jQueryUI+requireJS im Backend (falls überhaupt noch genutzt)


Legende:

⚠️ - Unbedingt beachten
💣 - Sehr großer Aufwand
🕳️ - Für diese Änderung gibt es keinen (dokumentierten) Migrationspfad
🪄 - Upgrade Wizard oder automatische DB Compare Lösung steht zur Verfügung
⚪️ - Not Scanned, bedeutet: Die Prüfung muss "von Hand" erfolgen. Eigene Automatisierung oder Rector-Regeln potenziell möglich.
🌓 - PartiallyScanned, bedeutet: Der TYPO3 Code-Scanner schlägt nur teilweise an, manuelle Prüfung notwendig
🌝 - FullyScanned, bedeutet: Der TYPO3 Code-Scanner sollte allen anzupassenden Code anmäkeln. Automatisierung/Rector-Regeln mit hoher Wahrscheinlichkeit möglich.

Entfernung von Deprecations

💣 Bereits im 13.0 release wurden alle Deprecations der Vorversion nun als Breaking Change tatsächlich entfernt. Der Changelog-Eintrag enthält eine sehr große Liste von entfernten Klassen/Methoden/Interfaces oder weiteren notwendigen Anpassungen, vor allem:
 

  • Das "AbstractPlugin" (piBase) Framework
  • Alte Backend-Modul Layouts
  • Diverse alte TypoScript Parsing/Configuration Klassen
  • CshViewHelper
  • WizardHook Interfaces
  • Extbase getContentObject und weitere ConfigurationManagerInterface Methoden
  • Alte TCA-Elementarten (InputColorPickerElement, InputDateTimeElement, InputLinkElement)
  • RecordList Browser / LinkHandler
  • Doctrine: addMultiple, add, andX, orX
  • LanguageService->getLL
  • StandaloneView Format/getTemplatePathAndFilename
  • AbstractTypeConverter
  • Password-Handling / Authentication
  • TypoLinkFactory
  • Einige BackendUtility Methoden
  • Einige ältere DebugUtility Methoden
  • Einige ExtensionManagementUtility Methoden
  • GeneralUtility::_GET/GP/POST
  • ExtensionUtility::registerModule, registerTypeConverter
  • FlashMessages Parameter
  • Diverse TypoScriptFrontendController Properties (wie baseUrl, tmpl, xhtmlDoctype, xhtmlVersion)
  • TypoScript config.baseURL, spamProtectEmailAddresses, xhtmlDoctype
  • Entfernte TypoScript loginUser() und usergroup() condition
  • Konstante TYPO3_mainDir
  • $GLOBALS['TBE_STYLES']
  • Einige Hooks
  • TCA "mm_insert_fields"
  • Keine ext_icon.* Fallbacks mehr
  • Altes ContextMenu Handling
  • f:format.html ViewHelper geht nicht mehr im Backend-Kontext
  • Flexforms TCEforms Fallback
  • Entfernung alter Upgrade-Wizards (z.B. für Backend-Usersprachen, SVG sanitize, sys_log.channel)
  • CSP im Backend nun standardmäßig aktiv
  • fe_users.TSconfig und fe_groups.TSconfig entfernt
  • SoftHyphen CKEditor Plugin entfernt

FlexForms

  • ⚪️ (Potentiell aufwändig, da mit konzeptionelle Änderungen erforderlich; in der Realität sollte es selten genutzt sein) Beim Einsatz von "<section>" in FlexForm DataStructures (in XML Dateien oder in einer TCA definition mit type=flex) müssen diese angepasst werden, falls sie type=select Abschnitte enthalten. - [Changelog]
  • ⚪️ ⚠️ Flexforms: In der Verarbeitung von FlexForms wurden zahlreiche Anpassungen der involvierten Services vorgenommen. Bei einem Update sollte dringend das `bin/typo3 cleanup:flexforms` Kommando ausgeführt werden (und das Ergebnis geprüft werden). Die CLI-Option "--pid" und "--depth" wurde entfernt. - [Changelog1, Changelog2]
  • 🌝 ⚠️ Die Klasse FlexFormTools wurde stark überarbeitet. Mehrere Methodenanpassungen wurden vorgenommen und als intern deklariert oder entfernt. - [Changelog]
  • ⚪️Der XML Prolog-Header ("<?xml") wird nun immer gesetzt und ist nicht mehr optional, der dafür optionale Parameter an flexArray2Xml - [Changelog]
  • 🌝Konfigurationsoption $GLOBALS['TYPO3_CONF_VARS']['BE']['flexformForceCDATA'] wurde entfernt, da CDATA Verarbeitung intern darauf nicht mehr angewiesen ist - [Changelog]
  • ⚪️Primär von TemplateVoila genutzte Flexform Spalten (ds_pointerField_searchParent, ds_tableField) wurden entfernt. - [Changelog]

FormEngine

  • ⚪️ Eigene FormEngine Elementtypen besitzen kein parameterArray 'itemFormElID' mehr und müssen entfernt werden. - [Changelog]
  • ⚪️ Eigene FormEngine Elementtypen müssen immer ein label ausliefern - [Changelog]

Extbase

  • ⚪️ 💣 Strenge Typisierung für diverse Extbase-Klassen. Falls diese erweitert werden, muss die Typendeklaration beachtet werden(z.B. ActionController) - [Changelog]
  • ⚪️ ⚠️ Single Table Inheritance für fe_groups Objekte deaktiviert ("tx_extbase_type"). Für fe_users weiterhin nutzbar. - [Changelog]

TypoScript

  • ⚪️ ⚠️ Nutzung von show/hide Attributen des mod.wizards.newContentElement.wizardItems beim Anlegen von Content-Elementen ist aufgrund der eingefügten automatischen Registrierung nicht mehr nutzbar. - [Changelog]
  • ⚪️Die Möglichkeit mit `options.overridePageModule` ein individuelles Seiten-Model (z.B. TemplaVoila) zu definieren, wurde entfernt. Es können eigene reguläre Backend-Module registriert/genutzt werden. - [Changelog]

Upgrade von Doctrine/DBAL

  • ⚪️ Anpassungen im ExpressionBuilder - ::literal() muss nun immer ein String erhalten und weniger relevante trim/quote-Anpassungen. - [Changelog]
  • ⚪️TYPO3 nutzt intern die Doctrine DBAL API für datenbankübergreifende Abfragen. Das Major Release 4.0 von DBAL hat diverse Code-Änderungen durchgeführt und auch einige Breaking Changes. TYPO3 hat versucht, den Impact hiervon durch eigene "Adapter" abzufedern. Der TYPO3-interne QueryBuilder z.B. basiert zwar vollständig auf dem DBAL QueryBuilder, aber ist in der Lage einige TYPO3-spezifische Vereinfachungen im Quoting/Escaping und Connection/Type-Handling durchzuführen. Intensive Nutzung von DBAL-Features in eigenen Extensions sollte auf Kompatibilität zu DBAL v4 geprüft werden. Wenn Abfragen auf einzelne gezielte Platforms (MySQL, MariaDB, SQLite, PostgreSQL) angewendet werden, sollten die genutzten Klassen geprüft werden. - [Changelog1, Changelog2]
  • ⚪️ ⚠️ Anpassungen in den Connection Methoden: lastInsertId() kann keine Sequenz mehr enthalten. quote() hat keinen Typ-Parameter mehr. Die PDO::PARAM_* Konstanten müssen ersetzt werden durch die Connection::PARAM_* Konstanten. - [Changelog]
  • ⚪️ ⚠️ Mehrere Methoden im QueryBuilder wurden entfernt, primär interne und selten öffentlich genutzte Methoden wie get/set QueryParts. Wichtigste Änderung: Es darf nicht mehr ::execute() genutzt werden, sondern überall kontextabhängig entweder ::executeStatement() oder ::executeQuery(). Bei Verwendung von ::quote() muss nun immer ein String übergeben werden, der Typ-Parameter entfällt. - [Changelog]

Datenbank-Änderungen

  • ⚠️⚪️ Automatische Databankfeld-Erzeugung (potentiell großer Impact): Bereits mit TYPO3v12 wurde vorbereitet, dass TCA-Definitionen automatisch in Datenbank-Felddefinitionen interpretiert werden können, und damit einen Eintrag in `ext_tables.sql` obsolet machen. Dies wurde konsequent für Core-Datenbankfelder angepasst, wodurch es auch einige Änderungen in Datenbank-Felddefinitionen gab, die die Typen nun genauer fassen. Das TYPO3-interne Datenbankupdate sollte alle diese Definitionen mitsamt Charset/Collation-Anpassungen problemlos durchführen können. ext_tables.sql sind weiterhin gültig und haben Priorität vor der Automatik, das heißt, wenn keine Änderung vorgenommen wird, bleibt bei eigenen Extensions alles beim selben. Die Empfehlung ist, den neuen Komfort aber auch mitzunehmen. - [Changelog1, Changelog2]
  • ⚪️ 🪄 Datumsfelder (type=datetime) wurden erweitert auf BIGINT, um Datumsangaben vor 1970 und nach 2038 übergreifend zu ermöglichen (z.B. für historische Datumsangaben in Dateireferenzen) - [Changelog]
  • ⚪️ ⚠️ Reference Index: TYPO3 v13 hat begonnen dem RefIndex noch größere Relevanz beizumessen. In TYPO3 v14 wird dieser noch integraler zum Auslesen von Relationen werden (um die Performance zu steigern und aufwändige Datenbankabfragen zu vermeiden). Damit dies gut klappt, ist ein "korrekter" Referenz-Index zwingend notwendig. Bei einem Update muss mittels `bin/typo3 referenceindex:update` dieser unbedingt aktualisiert werden. - [Changelog]
  • ⚪️ Alle TCA-Tabellen in der "Default" connection): TYPO3 ermöglicht nun nicht mehr wie vorher, TCA-basierte Datenbanktabellen auf unterschiedliche Datenbanken aufzuteilen, um künftige Performanceverbesserungen zu ermöglichen. Weitere Connections für vollständig externe Datenbanktabellen sind weiterhin möglich. - [Changelog]
  • ⚪️ Entfernung ungenutzter tt_content Felder: Die Felder accessibility_title/bypass/bypass_text wurden aus der tt_content Tabelle entfernt. Falls man diese selbst genutzt hat, muss man sie nun selbständig dem TCA/DB hinzufügen. - [Changelog]

Abhängigkeiten / System-Anforderungen

  • ⚪️ Upgrade auf Symfony 7: Falls eigene Extensions ältere Symfony-Anwendungen benutzt haben müssen diese auch zu Symfony 7 kompatibel gemacht werden. - [Changelog]
  • ⚪️ Mindestanforderungen angehoben: PHP zu 8.2, MySQL zu 8.0.17 und MariaDB zu 10.4+: Da TYPO3 v12 auch schon zu PHP 8.2 und 8.3 kompatibel war, sollte diese Anhebung unkritisch sein. - [Changelog1, Changelog2]

Datei-System

  • ⚪️ Veraltete backend assets (z.B. clear.gif, filetree-folder-*.png) wurden entfernt - [Changelog]
  • ⚪️ Entfernung von Ordner "typo3conf" (kaum aufwändig, geringer Impact): Im Composer-Modus wird das genannte Verzeichnis nicht mehr genutzt, die letzten Reste (Backend Lock) wurden nun auch entfernt. Falls man Daten in dem Verzeichnis gespeichert hat, sollte man einen neuen Speicherort hierfür suchen (z.B. in var/ oder config/). - [Changelog]

EXT:extensionmanager

  • 🌓 (nicht aufwändig, unwahrscheinlicher Impact) Der ExtensionManager nun für Composer-installationen eine optionale Erweiterung und nicht mehr erforderlich. Einige bisher genutzten PSR-14 Events wurden entfernt und müssen durch `PackageInitializationEvent` ersetzt werden - [Changelog]
  • ⚪️ (sehr unwahrscheinlich) Das eigentlich interne Interface PackageInterface wurde mit Type-Declarations erweitert, Eigenimplementationen müssen angepasst werden - [Changelog]

EXT:felogin

  • Die Option "showForgotPasswordLink" wurde entfernt (da von Standard-Templates nicht mehr genutzt). - [Changelog]
  • ⚪️ Durch den Austausch des Hash-Services können in einer älteren TYPO3-Version erzeugte "Passwort vergessen"-Hashes nach dem Update nicht mehr verwendet werden. Die "Passwort vergessen"-Funktion muss dann am einfachsten von Besuchern neu ausgelöst werden. - [Changelog]
  • ⚪️ Der PSR-14 AfterUserLoggedInEvent wird nun auch für Frontend-Logins (statt nur für Backend-Logins) ausgeführt. - [Changelog]
  • ⚪️ Die Klasse FrontendBackendUserAuthentication wurde im Namensraum von EXT:backend auf EXT:frontend geändert. Diese interne Klasse sollte eigentlich nicht direkt verwendet werden (da @internal). - [Changelog]

EXT:ckeditor

  • ⚪️⚠️ Die Option editor.config.removePlugins muss immer ein Array sein, kein String mehr - [Changelog]

EXT:indexed_search (Potenzial aufwändig oder andere Suchsysteme erforderlich)

  • 🕳️⚪️ Veraltete Funktionen wurden ausgebaut (alle TypoScript Settings: specialConfiguration, iconRendering, flagRendering) sowie die Suche nach Sprachinhalten ausserhalb der aktuellen Sprachversion einer Seite. In der erweiterten Suche können keine "Suchregeln" mehr genutzt werden. Keine Metaphon-Suche mehr. - [Changelog1, Changelog2, Changelog3, Changelog4]
  • 🕳️🌝 Die pi1_Hooks wurden ersatzlos entfernt - [Changelog]
  • 🌝🪄 Konvertierung von indexedSearch Plugins von "list_type" zu "CType", Upgrade-Wizard steht bereit. - [Changelog]
  • ⚪️🪄 Anpassung Hash-Spalte auf ungekürzte MD5 Hashes - [Changelog]
  • ⚪️Die ViewHelper <is:pageBrowsingResults> und <is:pageBrowsing> wurden entfernt zugunsten der nativen Pagination API. Eigene Templates müssen angepasst werden. Generell wurden die Standard-Templates überarbeitet und müssen ggf. an eigene Anpassungen angeglichen werden. - [Changelog1, Changelog2]

PSR-14 Events

  • ⚪️ In den Events BeforePageIsResolvedEvent, AfterPageWithRootLineIsResolvedEvent, AfterPageAndLanguageIsResolvedEvent ist nun die Methode `getController` nicht mehr verfügbar, und der `TypoScriptFrontendController` kann nicht mehr ausgewertet werden. Dies wurde ersetzt mit dem PageInformation DTO (getPageInformation()). - [Changelog]
  • ⚪️ Der Event ModifyUrlForCanonicalTagEvent wird nun immer nach der Erzeugung des Canonical-Tags ausgeführt - [Changelog]

TCA

  • ⚪️ Der Typ "softref=notify" wurde entfernt - [Changelog]
  • 🌝 Sonderfelder [types][bitmask_*] im TCA wurden entfernt. - [Changelog]

FAL / Bilder

  • 🌓 ⚠️ Das Extbase-orientierte `AbstractRepository` wurde entfernt. Zugriffe auf diese lowlevel API sollten vermieden werden zugunsten der öffentlichen ResourceFactory/FileStorage/ResourceStorage APIs. - [Changelog]
  • 🌓 ⚠️ Eigene FAL Processors müssen die angepassten Interfaces (Typisierung) implementieren. Der AbstractGraphicalTask entfällt. - [Changelog]
  • 🌝 ⚠️ Diverse Aufteilungsmaßnahmen der `GifBuilder` und `GraphicalFunctions` Klassen mit einigen entfernten/verschobenen Methoden und Sichtbarkeitsänderungen. - [Changelog]
  • 🌝 Konfigurationsoption GFX/gdlib wurde entfernt; die Bibliothek wird automatisch genutzt wenn vorhanden. Layer/Masken werden im GIFBuilder nun immer mit PNG statt GIF Dateien erzeugt. Weitere veraltete Farb/Kompressionsverfahren als Optionen wurden entfernt. - [Changelog1, Changelog2, Changelog3, Changelog4]
  • 🌓 "imagesize" Caches wurden entfernt, da schon länger abgelöst durch `sys_file_processedfile` - [Changelog]
  • ⚪️Typ-Deklarationen in AbstractDriver, DriverInterface, FileInterface und FolderInterface, ResourceInterface erfordern Anpassungen in eigenen erweiternden Implementationen. Capabilities wurden in BitSet umgewandelt. - [Changelog1, Changelog2, Changelog3, Changelog4, Changelog5, Changelog6, Changelog7]

Entfernte Hooks

Migration zu PSR-14 Events, falls noch genutzt.
 

  • ['tslib/class.tslib_fe.php']['configArrayPostProc'] - [Changelog]
  • ['tslib/class.tslib_fe.php']['pageLoadedFromCache'] - [Changelog]
  • ['tslib/class.tslib_fe.php']['createHashBase'] - [Changelog]
  • ['tslib/class.tslib_gifbuilder.php']['gifbuilder-ConfPreProcess'] - [Changelog]
  • ['Link']['resolveByStringRepresentation'] - [Changelog]
  • ['tslib/class.tslib_content.php']['stdWrap_cacheStore'] - [Changelog]
  • [\TYPO3\CMS\Core\Domain\PageRepository::class]['init'] - [Changelog]
  • ['t3lib/class.t3lib_page.php']['getPage'] - [Changelog]
  • ['t3lib/class.t3lib_page.php']['addEnableColumns'] - [Changelog]
  • ['tslib/class.tslib_content.php']['getImgResource'] - [Changelog]
  • ['tslib/class.tslib_content.php']['stdWrap'] - [Changelog]
  • ['tslib/class.tslib_content.php']['getImageSourceCollection'] - [Changelog]
  • ['tslib/class.tslib_content.php']['getData'] - [Changelog]
  • ['tslib/class.tslib_content.php']['postInit'] - [Changelog]
  • ['TYPO3\CMS\Core\Imaging\IconFactory']['overrideIconOverlay'] - [Changelog]
  • ['tslib/class.tslib_content_content.php']['modifyDBRow'] - [Changelog]

JavaScript

  • ⚠️ Entfernung von jQuery im Backend - JavaScript ES6 Module mit WebComponent LIT Integration werden im Backend nun weitestgehend genutzt. - [Changelog]
  • ⚪️Entfernung von RequireJS als Modul-Loader - [Changelog]
  • ⚪️Entfernung von jQuery UI - [Changelog]
  • ⚪️ Events, die auf DocumentSaveActions.getInstance().addPreSubmitCallback() zugegriffen haben benötigen einen boolean Callback-Return - [Changelog]
  • ⚪️ DebounceEvent hat nun kein "immediate" Flag mehr - [Changelog]

Backend-Änderungen

  • 🌓 🪄 Der DOKTYPE_RECYCLER Seitentyp wurde entfernt zugunsten der nativen EXT:recycler Funktionalität (Auswertung von "deleted")

API-Änderungen

  • 🌓 💣 Viele grundsätzliche Änderungen in $GLOBALS['TSFE'] bzw. TypoScriptFrontendController, diverse Properties wurden als internal bzw. readonly definiert. Grundsätzlich erfolgt Zugriff auf diese Daten nun innerhalb des $request Kontexts mit einem 'frontend.page.information' Aspekt. Vor allem bei eigenen Middlewares oder Bootstrapping von TypoScript wurden solche Methoden möglicherweise bislang genutzt und müssen ersetzt werden. Der Zugriff auf TSFE->fe_user, TSFE->applicationData, TSFE->generatePage_preProcessing existiert nicht mehr. - [Changelog1, Changelog2, Changelog3, Changelog4]
  • ⚪️ 💣 Großflächige native Return- und Parameter Typ-Deklarationen in GeneralUtility Methoden erfordern, dass alle Aufrufe typsicher sind. - [Changelog]
  • ⚪️ ⚠️ Entfernung einiger interner Properties im Ergebnis von PageRepository->getLanguageOverlay() ( _PAGES_OVERLAY_UID, _PAGES_OVERLAY_LANGUAGE, _PAGES_OVERLAY_REQUESTEDLANGUAGE) - [Changelog]
  • ⚪️ Eigene Implementierungen vom `PaginationInterface` müssen nun die Methode `getAllPageNumbers` implementieren (nicht aufwändig, vermutlich selten genutzt) - [Changelog]
  • ⚪️ TypoLinkCodecService erhält Typisierung und wurde als `final readonly` gesetzt. Anpassungen an jedem Service können nun mittels PSR-14 Events stattfinden. - [Changelog]
  • 🌝 ⚠️ Bisherige (interne) Verwendung der Variable `$hashService` mehrerer Klassen (vor allem Login, Extbase, EXT:form) wird durch einen neuen Hash-Service abgelöst und müssen angepasst werden, falls bisher in eigenen Klassen ausgewertet. - [Changelog]
  • ⚪️ ⚠️ Die Klasse PageRepository erhält Typisierung und Aufrufe der Methoden müssen diese korrekt beachten um PHP-Fehlermeldungen zu vermeiden. - [Changelog]
  • ⚪️ Die Klasse `Context` wurde für Dependency-Injection Nutzung optimiert, ein ContextAwareInterface und ContextAwareTrait wurde entfernt. Die Klasse wird primär nur vom Core instanziert; falls dies in Middlewares selbständig geschieht, muss es angepasst werden. - [Changelog]
  • 🌓 Das Interface LinkParameterProviderInterface wurde angepasst und zwei nicht mehr benötigte Methoden entfernt, Type-declaration wurde eingeführt. Eigen-Implementierungen müssen angepasst werden. - [Changelog]
  • ⚪️Das Feature-Toggle security.usePasswordPolicyForFrontendUsers wurde entfernt, PasswordPolicies sind immer aktiviert. - [Changelog]
  • 🌝 Die Methode 'setFetchAllFields()' im RelationHandler wurde entfernt - [Changelog]
  • 🌝 Methode GeneralUtility::sanitizeLocalUrl() benötigt nun einen Parameter - [Changelog]
  • ⚪️ Die `UnableToLinkException` und `LinktypeInterface` Klassen sind nun strikt typisiert, Parameter beim Konstruktor-Aufruf müssen nun typsicher sein - [Changelog]
  • ⚪️ ⚠️ Einsatz der VersionState und Icon->state Klasse und seiner Konstanten wurde konvertiert zu PHP ENUMs und Aufrufe müssen angepasst werden. Die getIcon() Methode nutzt den 4. Parameter nun leicht anders.
    \TYPO3\CMS\Core\Authentication\LoginType::LOGIN und \TYPO3\CMS\Core\Authentication\LoginType::LOGOUT sind nun auch native ENUMs. [Changelog1, Changelog2, Changelog3, Changelog4]
  • ⚪️ Die Klasse `PageTsBackendLayoutDataProvider` ist nun final und kann nicht mehr erweitert werden - [Changelog]
  • ⚪️ `JsConfirmation` Bitmask wurde umgewandelt in ein natives BitSet - [Changelog]
  • ⚪️ MfaViewType ist nun ein natives PHP Enum, eigene MFA-Provider müssen angepasst werden - [Changelog]
  • ⚪️ GeneralUtility::intExplode liefert nun stets numerierte fortlaufende Array-Werte zurück, ohne "Löcher". - [Changelog]
  • ⚪️ FormPersistenceManagerInterface hat eine zusätzliche Methode erhalten, die immer implementiert werden muss - [Changelog]
  • APIs als "@internal" konvertiert und damit nicht mehr zum eigenen Einsatz vorgesehen:
    • ⚪️ (vermutlich selten genutzt) TimeTracker Zugriff auf "@internal" gesetzt und nicht mehr öffentliche API - [Changelog]
    • ⚪️ Umstellung einiger Klassen auf "@internal" - [Changelog]

EXT:scheduler

  • ⚪️Die Klasse \TYPO3\CMS\Scheduler\Task\Enumeration\Action ist nun ein natives ENUM, die Konstanten ::ADD, ::EDIT, ::LIST finden sich nun in einem neuen Namensraum. - [Changelog]

EXT:linkvalidator

  • ⚪️ Das LinktypeInteface ist nun typisiert, Implementationen müssen die Signaturen übernehmen. - [Changelog]
  • ⚠️⚪️ Externe Links werden standardmäßig nicht mehr geprüft - [Changelog]

EXT:adminpanel

  • 🌓 🕳️ Der Aspekt "typoscript" von der Context-Klasse wurde entfernt und wird im Adminpanel nicht mehr ausgewertet, im Kontext der Option "forcedTemplateParsing" - [Changelog]

EXT:t3editor

  • ⚪️Wurde in EXT:backend integriert, dadurch werden nun einige Code-Eingabefelder automatisch mit einem RTE-ähnlichen Editor ausgestattet (und kann nicht abgeschaltet werden) [Changelog]

Den Abschluss bildet die nächste Seite mit den gefürchteten Deprecations.

Über Faktor E

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!