# TYPO3: Mit Rector Aktualisierungen in TYPO3 optimieren

TYPO3 Rector erlaubt eine schnelle, automatisierte Überarbeitung von TYPO3-PHP-Code. Auf diese Weise sorgen Sie ohne großen Aufwand dafür, dass die Elemente Ihrer Installation stets aktuell sind – was insbesondere bei Updates und Upgrades wichtig ist.

## Was ist TYPO3 Rector?

[TYPO3 Rector](https://www.typo3-rector.com/ "TYPO3 Rector") ist ein Tool, das Entwicklerinnen und Entwicklern hilft, den **Code automatisch** an neue Versionen von TYPO3 oder an neue PHP-Standards **anzupassen**. Bei einem Update auf eine neue Version von TYPO3 können durch Rector veraltete Funktionen und Methoden automatisch durch die neuen, empfohlenen ersetzt werden. Abseits der Durchführung von Major-Updates kann Rector auch bei umfangreichen Code-Anpassungen eine wertvolle Hilfe sein.

## Welche Vorteile bringt Typo3 Rector?

Rector bietet **vordefinierte Regeln für TYPO3**, die speziell darauf abzielen, die Kompatibilität mit neuen Versionen zu gewährleisten und den Code zu modernisieren. Wenn Sie zum Beispiel eine [TYPO3-Extension](https://www.ionos.de/digitalguide/hosting/cms/typo3-extensions/) auf eine neue Version anpassen müssen, kann Rector den Großteil der **Refaktorierung** übernehmen und Ihnen viel manuelle Arbeit abnehmen. Besonders bei großen Projekten mit vielen individuellen Anpassungen oder Extensions ist Rector ein sehr hilfreiches Tool, um sicherzustellen, dass alle Code-Teile korrekt und effizient aktualisiert werden – auch unabhängig von [TYPO3-Updates](https://www.ionos.de/digitalguide/hosting/cms/typo3-updates/).

TYPO3 Rector **analysiert den Quellcode Ihrer Projekte** und passt ihn systematisch an die Anforderungen neuer TYPO3-Versionen oder aktueller PHP-Standards an. Rector kann zudem Klassen automatisch auf Namespaces migrieren, Typdeklarationen für Methoden ergänzen und veraltete Funktionen beheben.

Entwicklerinnen und Entwickler profitieren also insbesondere von folgenden Vorteilen:

- Geringerer Aufwand bei Code-Refaktorierung
- Erhöhte Produktivität
- Einfache Integration in [CI](https://www.ionos.de/digitalguide/websites/web-entwicklung/continuous-integration/)/[CD](https://www.ionos.de/digitalguide/websites/web-entwicklung/continuous-delivery/)-Pipelines
- Minimiertes Fehlerpotential durch manuelle Anpassungen
- Unterstützt eine langfristig wartbare Codebasis
- Gewährleistet eine konsistente Codequalität
- TYPO3 Rector ist individuell konfigurierbar, um spezifische Anforderungen eines Projekts zu erfüllen

## So nutzen Sie TYPO3 Rector für die Code-Aktualisierung

In den nachfolgenden Abschnitten erfahren Sie, wie Sie das praktische Code-Refaktorierungs-Tool installieren, konfigurieren und ausführen. Abschließend zeigt ein kleines Beispiel exemplarisch, wie die Anwendung Sie im Programmieralltag unterstützen kann.

Hinweis Führen Sie TYPO3 Rector **niemals in der Produktionsumgebung** aus! Nutzen Sie das Tool immer in einer Entwicklungsumgebung, in der der Code unter Versionskontrolle steht (z. B. via Git). Überprüfen und testen Sie Änderungen zunächst, bevor Code-Migrationen Ihre Website möglicherweise funktionsunfähig machen.

### Schritt 1: TYPO3 Rector installieren

TYPO3 Rector ist ein PHP-Paket, das Sie ganz einfach **mithilfe von Composer einrichten** können. Voraussetzung ist also, dass Sie [TYPO3 mit Composer installiert](https://www.ionos.de/digitalguide/hosting/cms/typo3-composer/) haben. Sie fügen Rector dann zu Ihrem Projekt hinzu, indem Sie den entsprechenden Composer-Befehl verwenden:

```bash
composer require --dev ssch/typo3-rector
```

Sollten Sie im Rahmen der Installation auf Kompatibilitätsprobleme stoßen, können Sie es alternativ mit folgendem Kommando versuchen:

```bash
composer require --dev ssch/typo3-rector-prefixed
```

### Schritt 2: Rector konfigurieren

Nach der Installation von TYPO3 Rector erzeugen Sie mit folgendem Befehl eine **Konfigurationsdatei mit einem Basis-Setup**, das sich individuell an Ihre Anforderungen anpassen lässt:

```bash
vendor/bin/typo3-init
```

Die erstellte Konfigurationsdatei ist in der Regel unter dem Namen `rector.php` im Root-Verzeichnis Ihres Projekts zu finden. Sie können dort beispielsweise festlegen, welche **Verzeichnisse oder Dateien** geprüft und refaktoriert werden sollen, indem Sie folgende Angaben machen:

```php
$parameters->set(Option::PATHS, [
    __DIR__ . '/typo3conf/ext',
    __DIR__ . '/packages',
]);
```

Außerdem können Sie festlegen, auf welche TYPO3-Version Rector den Code optimieren soll, z. B. auf Version 12.4:

```php
$containerConfigurator->parameters()->set('typo3_version', '12.4');
```

Welche Möglichkeiten Sie bei der Konfiguration im Detail besitzen, können Sie der offiziellen [Rector-Dokumentation](https://getrector.com/documentation "getrector.com: Dokumentation des Tools") (unter „Configuration“) entnehmen.

### Schritt 3: TYPO3 Rector ausführen

Sobald Sie TYPO3 Rector konfiguriert haben, können Sie das Tool auf jeden beliebigen Zielpfad in Ihrer TYPO3-Installation ausführen. Um zunächst nur die von Rector geplanten Änderungen anzeigen zu lassen, hängen Sie im ersten Kommando den Parameter `--dry-run` an:

```bash
vendor/bin/rector process --dry-run
```

Auf diese Weise können Sie Fehler und ungewollte Anpassungen im Vorhinein leicht identifizieren. Um die Änderungen schließlich durchzuführen, wiederholen Sie den Befehl und lassen den Zusatz dabei weg:

```bash
vendor/bin/rector process
```

### Schritt 4: Code refaktorieren (Beispiel)

Um die Funktionsweise von TYPO3 Rector besser zu verstehen, demonstrieren wir sie abschließend an einem konkreten Beispiel: In älteren TYPO3-Versionen wurde häufig die Methode `GeneralUtility::linkThisScript()` verwendet, die in neueren Versionen durch `Request::getScriptRequestUri()` ersetzt wurde.

Folgende Codezeile in der aktuellen TYPO3-Installation ist noch auf eine ältere TYPO3-Version abgestimmt und enthält die alte Methode:

```php
$link = GeneralUtility::linkThisScript(['param' => 'value']);
```

Wenden Sie nun TYPO3 Rector auf den Code an, erkennt das Tool die veraltete Deklaration und ersetzt die alte Methode:

```php
$link = Request::getScriptRequestUri() . '?param=value';
```


This is a markdown version of: [https://www.ionos.de/digitalguide/hosting/cms/typo3-rector/](https://www.ionos.de/digitalguide/hosting/cms/typo3-rector/) for AI/LLM consumption.