TYPO3 Updates vereinfachen
Wie sich TYPO3-Code mit Rector (teil)-automatisiert aktualisieren lässt
Was ist Rector?
Rector ist ein PHP-Tool, um Code automatisiert beziehungsweise teilautomatisiert zu aktualisieren. Ursprünglich war es dafür gedacht, Applikationen leichter auf eine neue PHP-Version zu aktualisieren. Rector basiert auf einem System aus Regeln, die für die eigene Applikation angepasst und ergänzt werden können. Auf der Basis dieser Regeln kann Rector automatisch Änderungen am Code durchführen.
Wir verwenden Rector in der Agentur, um Code Upgrades von TYPO3 Extensions bei TYPO3 Major Upgrades zu vereinfachen und zu beschleunigen. Interessant ist aber auch die Möglichkeit, Code-Qualität mit Rector zu überwachen: Hier kann das Tool in den CI-Prozess eines Projektes eingebunden werden.
Rector for TYPO3
Mit Rector for TYPO3 steht für TYPO3 eine eigene Rector-Version zur Verfügung. Rector for TYPO3 ist speziell angepasst, um TYPO3 Extensions einfacher aktualisieren und deren Code-Qualität überwachen zu können:
https://github.com/sabbelasichon/typo3-rector
Kurzanleitung: Rector für TYPO3 verwenden
Im eigenen TYPO3-Projekt kann Rector for TYPO3 bequem als Extension eingebunden werden.
1. Installation der Erweiterung typo3-rector
composer require –dev ssch/typo3-rector
2. Konfigurationsdateien in das Stammverzeichnis des Projekts kopieren
cp ./vendor/ssch/typo3-rector/templates/rector.php.dist rector.php
3. Konfigurationsdatei nach Bedarf anpassen
$rectorConfig->sets([
Typo3LevelSetList::UP_TO_TYPO3_11,
]);
$rectorConfig->phpVersion(PhpVersion::PHP_74);
Übersicht über alle Regeln
https://github.com/sabbelasichon/typo3-rector/blob/main/docs/all_rectors_overview.md
Übersicht der SetLists für TYPO3
https://github.com/sabbelasichon/typo3-rector/blob/main/src/Set/Typo3SetList.php
4. Im ersten Durchlauf empfehlen wir, Rector mit der Option –dry-run auszuführen
-dry-run bedeutet, dass die Änderungen am Code nicht direkt ausgeführt werden, sondern nur in einer Vorschau gezeigt werden. Wenn alle Anpassungen in Ordnung sind, kann der Befehl ohne dry-run ausgeführt werden.
./vendor/bin/rector process <PFAD-ZUR-EXTENSION> --dry-run
Die Regeln/Sets sind dabei immer für die aktuell laufende Version einzustellen, nicht für die TYPO3-Version, auf die man letztendlich abzielt. Aktualisiert man über mehrere TYPO3-Versionen hinweg, macht es Sinn, diesen Schritt für jede Version, auf die aktualisiert werden soll, zu wiederholen. Freilich kann man auch direkt auf die finale Version aktualisieren, was aber ggf. fehleranfälliger sein kann.
5. Achtung: Einige manuelle Überprüfungen sollten trotzdem noch durchgeführt werden
Beispielsweise hat Rector beim Update eines unserer Projekte von v10 auf v11 den Code folgendermaßen angepasst:
Alter Code:
$excerptOfFrontendInfo["domainStartPageUid"] = $GLOBALS["TSFE"]->domainStartPage;
Migrierter Code:
$excerptOfFrontendInfo["domainStartPageUid"] = $GLOBALS['REQUEST']->getAttribute('site')->getRootPageId();
Diese Korrektur führt aber dazu, dass das Frontend nicht mehr korrekt ausgegeben wird, da das $GLOBALS-Objekt korrekt $GLOBALS['TYPO3_REQUEST'] lauten muss.
Quellen und weitere Informationen:
https://github.com/rectorphp/rector
https://github.com/sabbelasichon/typo3-rector/blob/main/docs/best_practice_guide.md
https://www.clickstorm.de/blog/rector-php-typo3-upgrades
Zurück
Sie suchen eine kompetente TYPO3-Agentur aus München?
Erfahren Sie mehr über das Content Management System TYPO3 und die TYPO3-Services von visionbites - Ihrer TYPO3-Agentur aus München
Mehr zu TYPO3Externer Inhalt - Mapbox
An dieser Stelle finden Sie Inhalte eines Drittanbieters, die Sie mit einem Klick anzeigen lassen können.
Dadurch können personenbezogene Daten an den Dienst Mapbox übermittelt werden. Mehr Informationen finden Sie in unseren Datenschutzbestimmungen.