Unlike many other competitive systems in the CMS landscape, TYPO3 has an unarguable reputation of being very flexible and open in regards to customization. The internal architecture, several public APIs and hooks/signals allow PHP developers to build solutions that perfectly meet their clients’ needs. At the same time, LTS releases often introduce new state-of-the-art technologies, which make working with the CMS an enjoyable journey for developers. TYPO3 v9 LTS offers similar advantages and the following paragraphs describe highlights for integrators and developers.
Database Table Creation Simplified
Developers can now omit many of the default database attributes in the “ext_tables.sql” file of their extension. The database schema analyzer has been made smarter for TYPO3 v9 LTS and now creates most of the management fields automatically, e.g. “uid”, “pid”, “sorting”, start and stop date/time, the hidden and deleted flags, etc. Therefore, developers can focus more on the business logic and let TYPO3 take care of the creation of system-internal fields and fields which are required for the language management and workspaces.
In previous versions of TYPO3 a lot of data from various parts of the system was scattered about. TYPO3 v9 LTS introduces a new Context API that aims to replace these globally available objects (e.g. TSFE, sys_page, BE_USER). Instead of exposing a full object, “aspects” of the API only contain properties, which are relevant and required. The main goal of this concept is to centralize global variables in a common, structured and logical way.
PSR-3, PSR-7 and PSR-15 Standards
The PHP Standard Recommendation (PSR) is a specification published by the PHP Framework Interop Group. By following this specification, software applications ensure high quality coding standards, a best-practice system design and interoperability with independent libraries.
Earlier this year, TYPO3 introduced PSR-15 middlewares both in the frontend as well as in the backend, This makes TYPO3 one of the first enterprise content management systems on the market to take this step. All web requests in the TYPO3 core return a response that complies with PSR-7, the standard for HTTP message interfaces.
Developers know how important logging is and that a common interface can be crucial to track errors, record important events and debug problems. The PSR-3 standard describes a logging interface for PHP applications, which is now used by all logging procedures throughout the TYPO3 system.
The aforementioned System Maintenance Area in the backend of TYPO3 contains a function named “Feature Toggles”, which allows TYPO3 integrators to enable and disable core features as required. In combination with a new API class “Features”, TYPO3 v9 provides an easy way for developers to build new features next to their legacy version and for integrators to control if and when to switch to the new feature.
Symfony ExpressionLanguage Component
Conditions in TypoScript have a long history and are widely used. As another major step forward, we have now introduced the Symfony ExpressionLanguage component to TYPO3 v9 LTS. The ExpressionLanguage component uses a specific syntax and adds a number of powerful features to TypoScript conditions for the frontend, as well as for the backend. A set of useful variables and functions are already shipped with the TYPO3 core, and developers can extend further as required.
Mail Queue (SwiftMailer)
In TYPO3 v9 LTS, you can now leverage SwiftMailer’s queue functionality - also known as “spool transport”. In most cases, developers want to send out emails immediately, but under certain circumstances, queuing emails and processing them later is beneficial, e.g. for performance reasons. This is now possible: mails can be queued in memory or in files. If the latter, sending of spooled emails can be triggered by a command line call or by a scheduler task.