Kommen wir nun zum Kern des Artikels. In den folgenden Abschnitten sind alle Änderungen jeweils mit Link zum Changelog und einer kurzen Beschreibung aufgeführt, sortiert nach Impact aus unserer Sicht.
Dieser Artikel besteht aus mehreren Unterseiten:
Einführung
Neue Funktionen
Neue Funktionen (für Kunden)
Neue Funktionen (für Entwicklerinnen und Entwickler)
Breaking Changes
Deprecations
#[Extbase\Validate()]
Attributen übermittelt werden - [Changelog]<f:split>
ViewHelper (wie PHP explode())<f:join>
ViewHelper (wie PHP implode())<f:replace>
ViewHelper (wie PHP str_replace())<f:first>
und <f:last>
für Zugriff auf das erste oder letzte Element eines Arrays<f:constant>
für das Auslesen einer PHP-Konstante<f:comment>
muss nun keine gültige Fluid-Syntax mehr sein - [Changelog]<f:feature>
für Feature-Flag Abfragen - [Changelog]Das Stichwort "PSR-14 Events" gilt für Erweiterbarkeit des TYPO3-Kerns. An vielen Stellen wurden neue EventDispatcher Aufrufe platziert, so dass Extensions eigene "Listener" für diese Event-Aufrufe registrieren können, um Daten vor/auf/nachzubereiten. Damit kann der TYPO3-Kern flexibel und individuell erweitert werden, ohne dass immer spezielle TYPO3-Patches vorgenommen werden müssten. Derartige Events sind eines der besten standardisierten Features der modernen Entwicklung von TYPO3. Beispiele für neue Events:
PHP unterstützt mittlerweile komfortable native PHP-Attribute, die phpdoc Annotationen ablösen. Auch Symfony, vor allem Symfony Dependency Injection, macht großen Gebrauch hiervon und kann Attribute zum Tagging nutzen. TYPO3 erweitert die Attribute für:
#[AsEventListener]
- Registriert Event-Listener unabhänigg von Services.yaml für PSR-14 Events - [Changelog]#[AsController]
- Taggt einen Backend(!)-Controller, so dass dieser nicht getrennt in einer Services.yaml registriert werden muss - [Changelog]#[AsMessageHandler]
- Registriert einen Service unabhängig von Services.yaml als Symfony/Messenger-Handler - [Changelog]Native PHP-Enum Objekte ermöglichen präziseren Zugriff auf Wert-Konstanten, und werden auch von TYPO3 nun an einigen public API stellen genutzt:
UriBuilder->buildUriFromRequest
ermöglicht einfacher Links für/zu Backend-Extensions anhand des aktuellen Requests (mit weiteren Parametern) zu erzeugen - [Changelog]Das $request Objekt (auch in $GLOBALS['TYPO3_REQUEST'], was künftig entfernt werden wird) ist für TYPO3 in seiner Middleware-Implementation der zentrale Ort, um Informationen ("State") in der Workflow-Kette zu transportieren. Es kann um Request-Attribute ergänzt und befüllt werden, die an unterschiedlichen Stellen im Code dann ausgelesen werden können. Das ist grundsätzlich nachvollziehbarer und gekapselter, als diesen State in diversen Singleton-Instanzen zu transportieren. Auch Entwickler können sich leichter an ein zentrales Pattern gewöhnen, um an kontext-relevante Informationen zu gelangen. Dieses Konzept wird mit TYPO3 v13 in diversen Stellen erweitert:
Mit dem Upgrade auf Doctrine DBAL 4 gibt es auch neue Features:
Auf der nächsten Seite schauen wir uns einmal die Breaking Changes an.
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!