Installieren lässt sich rector für TYPO3 über composer ganz leicht:
composer require --dev ssch/typo3-rector
Anschließend kann man eine Konfigurationsdatei für TYPO3 von der Vorlage ins Projekt-Root kopieren:
cp ./vendor/ssch/typo3-rector/templates/rector.php.dist rector.php
Diese Datei (rector.php) liegt nun in eurem Projekt-Root-Verzeichnis. Hier könnt ihr noch einstellen, auf welche Änderungen im Code eurer Extension geprüft werden soll. Wichtig dabei sind vor allem die SetLists und die einzelnen Services, die man dazu laden kann. Nachfolgend ein stark vereinfachtes Beispiel für eine Konfiguration einer TYPO3-Extension die für TYPO3 7 erstellt wurde, aber jetzt in TYPO3 11 benötigt wird:
<?php
declare(strict_types=1);
use Rector\Config\RectorConfig;
use Rector\Core\Configuration\Option;
use Rector\Core\ValueObject\PhpVersion;
use Ssch\TYPO3Rector\Configuration\Typo3Option;
use Ssch\TYPO3Rector\FileProcessor\Composer\Rector\ExtensionComposerRector;
use Ssch\TYPO3Rector\Rector\General\ConvertImplicitVariablesToExplicitGlobalsRector;
use Ssch\TYPO3Rector\Rector\General\ExtEmConfRector;
use Ssch\TYPO3Rector\Set\Typo3LevelSetList;
return static function (RectorConfig $rectorConfig): void {
$rectorConfig->sets([
Typo3LevelSetList::UP_TO_TYPO3_11
]);
$rectorConfig->phpstanConfig(Typo3Option::PHPSTAN_FOR_RECTOR_PATH);
$rectorConfig->importNames();
$rectorConfig->disableParallel();
$rectorConfig->disableImportShortClasses();
$rectorConfig->phpVersion(PhpVersion::PHP_74);
$rectorConfig->skip([
__DIR__ . '/**/Configuration/ExtensionBuilder/*',
__DIR__ . '/**/Resources/**/node_modules/*',
__DIR__ . '/**/Resources/**/NodeModules/*',
__DIR__ . '/**/Resources/**/BowerComponents/*',
__DIR__ . '/**/Resources/**/bower_components/*',
__DIR__ . '/**/Resources/**/build/*',
__DIR__ . '/vendor/*',
__DIR__ . '/Build/*',
__DIR__ . '/public/*',
__DIR__ . '/.github/*',
__DIR__ . '/.Build/*',
]);
$rectorConfig->rule(ConvertImplicitVariablesToExplicitGlobalsRector::class);
$rectorConfig->ruleWithConfiguration(ExtEmConfRector::class, [
ExtEmConfRector::ADDITIONAL_VALUES_TO_BE_REMOVED => []
]);
$rectorConfig->ruleWithConfiguration(ExtensionComposerRector::class, [
ExtensionComposerRector::TYPO3_VERSION_CONSTRAINT => ''
]);
};
Und schon könnt ihr eure Dateien automatisch modernisieren lassen:
./vendor/bin/rector process private/typo3conf/ext/extensionkey --dry-run
./vendor/bin/rector process private/typo3conf/ext/extensionkey