Rektor: Upgrade der PHP-Anwendung
28. März 2025In der dynamischen Welt der PHP-Entwicklung müssen wir oft Code refaktorisieren, ihn auf neuere PHP-Versionen aktualisieren oder an Änderungen in den verwendeten Bibliotheken und Frameworks anpassen. Manuelle Änderungen können zeitaufwändig und fehleranfällig sein, und hier kommt Rector ins Spiel. Dieses Tool ermöglicht eine automatisierte Codetransformation mit Hilfe von Regeln, die einfach konfiguriert und erweitert werden können. erweiterbar sind. In diesem Artikel werden wir uns ansehen, wie man Rector installiert und wie man es effektiv für die Modernisierung von PHP-Anwendungen.
Das Tool PHP Rector ist ein leistungsstarkes automatisches Refactoring-Tool, das bei der Migration von Code zwischen PHP-Versionen hilft, Frameworks zu aktualisieren und die Codequalität zu verbessern. Mit vordefinierten Regeln und der Möglichkeit, benutzerdefinierte Transformationen zu erstellen, ermöglicht es Entwicklern, Code effizient zu aktualisieren Code effizient zu aktualisieren, ohne jede Datei manuell bearbeiten zu müssen. So spart es Zeit und damit Geld.
Typische grundlegende Beispiele dafür, was Rector für mich tut
Beispiele dafür, was Rector automatisch in eine neuere Version konvertieren kann, was eine Menge manueller Arbeit erspart!
1. Umwandlung der alten Array-Notation in die moderne Notation (array()
→ []
)
Wenn Sie PHP 5.4 oder höher verwenden, kann Rector Ihre alte Array-Notation in die neue umwandeln:
Original-Code:
$array = array(1, 2, 3);
Nach dem Refactoring:
$array = [1, 2, 3];
2. Alte Konstruktormethoden umwandeln (__construct
anstelle des Klassennamens)
In PHP 4 hatten Konstruktoren früher den gleichen Namen wie die Klasse, was in modernen PHP-Versionen veraltet ist. Rektor ist kann außer Kraft gesetzt werden.
Original-Code:
class MyClass {
function MyClass() {
echo "Hallo";
}
}
Nach dem Refactoring:
class MyClass {
function __construct() {
echo "Hallo";
}
}
3. Ersetzen veralteter Funktionen
Zum Beispiel wurde each()
in PHP 8.0 entfernt, so dass Rector es durch das moderne foreach
ersetzen kann.
Original-Code:
while (list($key, $value) = each($array)) {
echo "$key => $value";
}
Nach dem Refactoring:
foreach ($array as $key => $value) {
echo "$key => $value";
}
4. Hinzufügen strengerer Typen (PHP 7.4+)
Rector kann Typdeklarationen für Argumente und Rückgabewerte von Methoden hinzufügen.
Originalcode:
function add($a, $b) {
return $a + $b;
}
Nach der Umstrukturierung:
Funktion add(int $a, int $b): int {
return $a + $b;
}
5. Konvertieren in ::class
statt String-Klassennamen
Modernes PHP erlaubt die Verwendung von ::class
anstelle von Klassennamen als Strings.
Original-Code:
$className = "MyClass";
$obj = new $className();
Nach dem Refactoring:
$className = MyClass::class;
$obj = new $className();
Dies sind nur grundlegende Beispiele - Rector kann viele weitere Änderungen vornehmen, wie z.B. automatischer Code für neuere PHP-Versionen, das Entfernen veralteter Funktionen und das Umschreiben von Symfony/Laravel-Code nach empfohlenen Standards.
6. Konvertierung von Annotationen in Attribute (Doctrine, Symfony, PHP 8+)
PHP 8 führte native Attribute ein, um die traditionellen PHPDoc-Annotationen zu ersetzen. Rector ti hilft Ihnen, alte Annotationen automatisch in moderne Attribute umzuschreiben.
Originalcode (mit Annotationen):
Verwenden Sie Doctrine\ORM\Mapping als ORM;
/**
* @ORM\Entity
* @ORM\Table(name="users")
*/
class User {
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private int $id;
/**
* @ORM\Column(type="string", length=255)
*/
private string $name;
}
Nach der Umstrukturierung zu Attributen:
Doctrine\ORM\Mapping als ORM verwenden;
#[ORM\Entity].
#[ORM\Table(name: "users")]
class User {
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: "integer")]
private int $id;
#[ORM\Column(type: "string", length: 255)]
private string $name;
}
Danach müssen Sie noch die Doctrine-Konfiguration ändern, um Attribute anstelle von Anmerkungen zu verwenden, und Sie können die die Anwendung ausprobieren, um zu sehen, wie sie nach dem Wechsel von Anmerkungen zu Attributen funktioniert.
Die Konvertierung von Annotationen in Attribute ist die häufigste Aufgabe, für die ich Rector verwende. Sie können sowohl die Doctrine Entity Konvertierung als auch die Controller Annotation in Symfony Framework. Wenn Sie dabei Hilfe benötigen, können Sie mich gerne kontaktieren.
Weitere Details zu diesem Thema finden Sie unter Hinweise zum Upgrade von Anmerkungen zu Attributen
✅ Weitere Vorteile der Umwandlung von Anmerkungen in Attribute:
- Kürzerer und übersichtlicherer Text
- Keine Abhängigkeit vom PHPDoc-Parser erforderlich
- Attribute sind Teil der Sprache, was die Stabilität und Leistung verbessert
Installation von Rector
Rector ist opensource und wird unter der freien MIT-Lizenz vertrieben
Wir können Rector innerhalb des Projekts installieren, aber es kann auch anderswo installiert werden - man braucht nur eine ausreichend aktuelle Version von PHP. Wenn Sie also ein Projekt mit einer alten Version von PHP haben, können Sie Rector nicht innerhalb des Projekts installieren und ausführen, sondern Sie müssen es außerhalb installieren und mit einer anderen neueren Version von PHP laufen.
Rector kann mit Composer in ein Projekt installiert werden. Es wird empfohlen, ihn als dev Abhängigkeit zu installieren, da er normalerweise nur während der Entwicklung und des Refactorings verwendet wird.
composer require rector/rector --dev
Nach der Installation kann man eine Konfigurationsdatei erstellen, z.B:
vendor/bin/rector init
Dieser Befehl generiert eine grundlegende rector.php
Datei, in der Sie Regeln für das Refactoring definieren können.

Rector starten
vendor/bin/rector process src
Mit diesem Befehl werden alle PHP-Dateien im Ordner src
gemäß den in rector.php
festgelegten Regeln überarbeitet.
Ausführen ohne Änderungen am Quellcode vorzunehmen
vendor/bin/rector process src --dry-run
Video
Ein Video mit einer Beschreibung von Rector und einer praktischen Demonstration, wie man Rector zum Refactoring einer Anwendung verwendet.
Artikel zu einem ähnlichen Thema
Programmiersprache Go
Python-Programm zur Steuerung von Docker über die API
Wie man MailCatcher zum Testen von E-Mails verwendet
Python OpenAI API
Erstellen einer WebSocket-Webanwendung und Einrichten eines Proxys
Projektmanagement: agile Softwareentwicklung
Wie man alte PHP-Anwendungen ausführt
Was ein guter Programmierer wissen sollte
Programmiersprache Rust
NodeJS: Entwicklung, Serverkonfiguration
Nette Sicherheitslücke CVE-2020-15227
REST API: Plattform-API
Kundenspezifisches Web- und E-Mail-Hosting mit ISP Config-Software
Programmierung in SQL: PostgreSQL, MySQL/MariaDB
HTTPS: sicheres Web
NoSQL-Datenbank Mongo DB
Herstellen einer Verbindung zu Microsoft SQL Server unter Linux
Was ist die Stellenbeschreibung eines Programmierers?
Lokalisierung von Python-Anwendungen
Welches Mail- und Webhosting Sie wählen sollten
Digispark - Atmel ATtiny Mikrocontroller mit Arduino IDE programmieren
Entwicklung für ARM-Prozessoren mit Arduino IDE
Wie programmiere ich den ESP8266 WiFi-Prozessor?
Offenes Smartphone mit Linux - Openmoko Neo FreeRunner
Newsletter
Wenn Sie daran interessiert sind, gelegentlich Neuigkeiten per E-Mail zu erhalten.
Sie können sich registrieren, indem Sie Ihre E-Mail-Adresse eingeben
News-Abonnement.
+