For coders TYPO3 Tech Corner

in2publish Version 10: Volle Kraft voraus für TYPO3 v10

in2publish Version 10: Volle Kraft voraus für TYPO3 v10

In diesem Blogpost erfahrt ihr welche Neuerungen der Conent Publisher erfahren hat. Seit einigen Wochen arbeiten wir intensiv der Entwicklung der neuen Versionen von in2publish_core und den dazu gehörenden Extensions in2publish, in2publish_http, in2publish_local, in2publish_native und in2publish_seclib. Die neuen Versionen ermöglichen es uns das Produkt für die Zukunft fit zu machen und Performance, Stabilität und Sicherheit immer weiter zu entwickeln. 

Die neuen Versionen wurden für TYPO3 Version 10 entwickelt. Wenn Sie noch TYPO3 v9 verwenden, sollten Sie ein zeitnahes Update in Betracht ziehen. Mehr über das letzte reguläre Update für TYPO3 v9 erfahrt ihr hier.

in2publish_core 10.0.0 – ein Meilenstein

Wie beschreiben wurde die Unterstützung für TYPO3 v9 entfernt, da diese Version nicht mehr offiziell unterstützt wird. Gleichzeitig konnten wir dadurch einige weitreichende Änderungen vornehmen, wie die Umwandlung von Signal-Slots in Ereignisse, die Verwendung von Dependency Injection und die Deklaration zentraler Komponenten als Dienste.

Events

TYPO3 v10 integriert eine weitere Komponente des Symfony Frameworks, die Event-Komponente. Dies ermöglichte es uns, die klobige Implementierung der Signal-Slots in extbase durch das schnelle und schlanke DI-Container-basierte Event-System zu ersetzen.
Für unsere Benutzer, die auf Signale angewiesen sind, um ihre zusätzliche Veröffentlichungslogik zu implementieren, haben wir eine Abwärtskompatibilitätsschicht für Signale hinzugefügt (nur für Signale und nur für in2publish_core v10). Sie können die alten Signale weiterhin verwenden, müssen aber auf Event-Listener umsteigen, bevor Sie TYPO3 und in2publish_core auf die später erscheinende v11 aktualisieren.
Hier finden Sie eine umfassende Liste aller Signale und der Events, die die Signale ersetzen.
Events machen es nicht nur einfacher, Ihren Code dazu zu bringen, mit dem Content Publisher zu interagieren, sie sind auch viel schneller.

Services

Ein weiteres Feature, das mit TYPO3 v10 eingeführt wurde, ist der Dependency Injection Container, eine weitere Komponente des Symfony Frameworks.
Wir verwenden die Service-Definition, um Faktoren für verschiedene Dienste zu definieren, wie z.B. die lokale und fremde Datenbankverbindung, die nun injizierbar sind. Man braucht also die DatabaseUtility nicht mehr zu verwenden. Bitte beachten: Ein Fehler wird verursacht, wenn eine Verbindung injiziert wird, die nicht verfügbar ist. (Dies bedeutet, dass keine Verbindungen in Klassen injiziert werden dürfen, die immer geladen werden, da dies das Backend in einen unbrauchbaren Zustand versetzt).
Eine andere Möglichkeit ist die dynamische Registrierung von Diensten in der Datei Services.php, die einige Bedingungen aus der Datei ext_tables.php entfernt, wodurch der TYPO3-Bootmechanismus etwas effizienter wird.

Automated testing

Tests sind nur dann sinnvoll, wenn sie tatsächlich ausgeführt werden. Deshalb haben wir unsere Tests so umstrukturiert, dass sie in GitHub-Aktionen ausgeführt werden. Sie werden bei jedem Push in das Repository und täglich auf einer geplanten Basis ausgeführt. Letzteres soll die Kompatibilität mit Bibliotheken von Drittanbietern sicherstellen, die unabhängig voneinander aktualisiert werden.
Der Testlauf für diese Version ist hier zu finden.

weitere Neuerungen

  • Die veraltete Methode modifyConfiguration wurde aus AbstractTask entfernt. Der Task sollte mit der korrekten Konfiguration konstruiert werden.
  • Kommunikationsadapter müssen den Konstruktor nicht mehr implementieren, können aber den Konstruktor für Dependency Injection verwenden. Alle Adapter werden automatisch öffentlich gemacht, so dass keine zusätzliche Konfiguration in der Dienstekonfiguration erforderlich ist.
  • Wir benötigen mindestens doctrine/dbal 2.11.0. Dies entspricht der Mindestanforderung von TYPO3, die bei 2.10 liegt. Doctrine DBAL hat die Art und Weise geändert, wie Abfrageergebnisse abgerufen werden, und wir haben die neue API als unseren Standard übernommen.
  • Typ-Hinweise überall. Alle Parameter, die einen Typ-Hinweis haben können, haben einen erhalten, ebenso wie die Typ-Hinweise der Methodenrückgabe. Bestehender Code kann gegebenenfalls beeinträchtigt werden aufgrund von Verletzungen des Liskov-Substitutionsprinzips, das PHP streng befolgt. Die Aktualisierung des Codes sollte schnell und einfach möglich sein (IDE nutzen) 

in2publish Version 10

in2publish v10 ist nur mit in2publish_core 10.x kompatibel und ist für TYPO3 v10 entwickelt.

Events

in2publish v10 hat die gleiche Abwärtskompatibilitätsschicht für Signale wie in2publish_core. Sie können weiterhin Signale verwenden, müssen diese aber irgendwann ersetzen. Die Abwärtskompatibilitätsschicht wird in in2publish v11 entfernt werden. Die umfassende Liste aller Signale und der Ereignisse, die die Signale ersetzen sind hier zu finden. 

Services

in2publish_core hat es bereits vorgemacht und in2publish geht noch einen Schritt weiter. Wir verwenden die Service-Konfiguration, aber wir wollen trotzdem eine strikte Trennung zwischen den Funktionen, die mit in2publish ausgeliefert werden, beibehalten. Jedes in2publish-Feature hat seine eigene Service-Konfiguration, wodurch wir Seiteneffekte und Konflikte reduzieren können.

in2publish_http 7.0.0

Viel Besonderes gibt es an diesem Release nicht, außer dass die Unterstützung für TYPO3 v9 wie bei den anderen Extensions eingestellt wurde. Diese Version unterstützt daher explizit  in2publish_core v10 und TYPO3 v10.
Außerdem wurde die Debugging-Unterstützung verbessert, was im Wesentlichen bedeutet, dass xdebug-Sitzungen von der CLI weitergeleitet werden.

in2publish local file adapter 1.1.0

Diese Extension ermöglicht es Content Publisher, meinen lokalen Dateispeicher in einem anderen lokalen (Live-)Dateispeicher zu veröffentlichen. Die Version 1.1.0 unterstützt TYPO3 v10 mit in2publish v9 oder v10.

in2publish_native SSH/SCP adapter 1.1.0

Diese Erweiterung bietet Content-Publisher-Kommunikationsadapter, die die Standard-SSH2-Adapter in der Community Edition ersetzen. Diese Adapter verwenden die ssh- und scp-Binärdateien des Betriebssystems, um eine Verbindung herzustellen und Dateien auf das Fremdsystem zu übertragen. DAs Release 1.1.0 supportet TYPO3 v10 mit in2publish v9 oder v10.

Zurück

Kennst du das: Immer nur schnell schnell?

Wie wäre es einmal mit Zeit und Respekt für Codequalität? Arbeiten im Team? Automatisierte Tests?

Komm zu uns