- GitHub - rectorphp/rector: Instant Upgrades and Automated Refactoring of any PHP 5.3+ code
- Instant Upgrades and Automated Refactoring of any PHP 5.3+ code - rectorphp/rector
Tekst przetłumaczony przez AI.
Podsumowanie posta wygenerowane przez AI durumis
- Prezentujemy sposób migracji kodu PHP 5.3 do PHP 7.4 za pomocą narzędzia Rector do aktualizacji wersji PHP.
- Po instalacji Composera, instalujemy Rector w projekcie i za pomocą pliku konfiguracyjnego rector.php określamy kod docelowy aktualizacji i wersję PHP.
- Poprzez konfigurację i wykonanie reguł modyfikacji automatycznie poprawiamy kod, a zmiany śledzimy za pomocą Gita, zapewniając bezpieczną aktualizację.
Przeglądając stronę z systemem CMS Gnuboard 5 w języku koreańskim, natknąłem się na kilka wpisów od użytkowników, którzy mieli problemy z przestarzałą składnią i wersją PHP po aktualizacji.
W trakcie poszukiwań...
na Reddicie znalazłem informację o narzędziu o nazwie Rector, które może pomóc w migracji. W tym wpisie przedstawię jego sposób użycia.
Od czasu premiery PHP 7.0 w 2015 roku pojawiło się kilka narzędzi do migracji, takich jak php cs-fixer i Rector.
Rector wydaje się być bardziej przyjazny w obsłudze.
Rector (wymowa: rektor) sprawdza i koryguje kod PHP w wersjach od 5.3 do 8.2, dostosowując go do wybranej wersji językowej.
Jednakże, Rector jest analizatorem statycznym, co oznacza, że nie wykrywa błędów występujących w czasie wykonywania kodu.
Do korzystania z Rectora wymagane jest zainstalowanie Composera – menadżera pakietów PHP.
1. Instalacja Composera.
2. Zainstaluj Rectora w bieżącym folderze projektu.
3. Utwórz plik konfiguracyjny rector.php.
Konfiguracja rector.php
Aby lepiej zrozumieć konfigurację, załóżmy następującą sytuację.
Kod źródłowy jest napisany w PHP 5.3, a celem migracji jest PHP 7.4. Załóżmy również, że używamy Rectora w wersji 1.0.3.
Rector version is 1.0.3.
RectorConfig::config() służy do określania folderu z kodem źródłowym i ustawiania wersji PHP.
Funkcja withPhpSets służy do określania funkcji PHP, które mają zostać zaktualizowane.
Jeśli aktualnie używana wersja PHP to PHP 8.0,
można ustawić wersję PHP w ten sposób (PHP version: true).
Jednakże, jeśli używana wersja PHP to PHP 7.4 lub niższa
nie można używać składni z nazwanymi argumentami w funkcjach, więc trzeba ustawić true dla docelowej wersji.
Rector obsługuje PHP 8.3, więc aby określić PHP 7.4, należy użyć następującej składni:
->withPaths([
__DIR__ , // katalog, w którym znajduje się plik rector.php.
])
Określa reguły i foldery, które mają zostać pominięte podczas migracji.
Foldery określane są za pomocą '/nazwa_folderu/*'.
Pliki określane są za pomocą 'nazwa_pliku'.
W regułach dodałem "SensitiveConstantNameRector".
Rector, w przypadku tablic PHP, nie wykrywa brakującego indeksu i traktuje go jako stałą, co może prowadzić do niezamierzonych zmian. Dlatego dodałem go do reguł pomijania.
Te reguły dotyczą stylu kodowania, dlatego je pomijam.
Wykonanie
Istnieją dwie opcje.
To polecenie wyświetla w konsoli listę zmian, które zostaną wprowadzone w kodzie, bez ich faktycznego wprowadzania.
W przypadku dużych projektów może być konieczne zwiększenie limitu pamięci za pomocą opcji --memory-limit=2G.
To polecenie wprowadza zmiany bezpośrednio w kodzie źródłowym.
Narzędzie oferuje wiele opcji, dlatego przed wykonaniem migracji warto sprawdzić, czy nie ma żadnych niepożądanych ustawień. Zaleca się również korzystanie z Git, aby móc śledzić zmiany wprowadzone w kodzie.