초록 기린

Introduzione a Rector, lo strumento per l'aggiornamento di PHP

Creato: 2024-03-24

Creato: 2024-03-24 23:17

Mentre stavo navigando su un sito web che utilizza Gnuboard5, un CMS PHP coreano, mi sono imbattuto in diversi post che lamentavano difficoltà dovute a sintassi e versioni non più supportate dopo l'aggiornamento di PHP.

Quindi, ho iniziato a cercare...

su Reddit ho trovato che uno strumento chiamato Rector può aiutare con la migrazione, quindi ecco una guida al suo utilizzo.



Dopo il rilascio di PHP 7.0 nel 2015, sono stati sviluppati diversi strumenti di migrazione per PHP, tra cui php cs-fixer e Rector.

Rector sembra essere più facile da usare.

Rector (pronuncia: Rettore) controlla la sintassi del codice PHP dalla versione 5.3 alla 8.2 e lo corregge in base alla versione desiderata.


Un aspetto negativo di Rector è che, essendo un analizzatore statico, non è in grado di rilevare gli errori che si verificano durante l'esecuzione (runtime).



Per utilizzare Rector, è necessario avere installato Composer, lo strumento di gestione dei pacchetti PHP.

1. Installa Composer.

2. Installa Rector nella cartella del progetto corrente.

3. Crea il file di configurazione rector.php.



Configurazione di rector.php

Per semplificare la comprensione, definiamo uno scenario.

Supponiamo che il codice sorgente sia in PHP 5.3 e che l'obiettivo dell'aggiornamento sia PHP 7.4. Procederemo con questa ipotesi.

La versione di Rector utilizzata è la 1.0.3.


RectorConfig::config() configura la cartella del codice sorgente e la versione di PHP.

La funzione withPhpSets configura le funzioni PHP da aggiornare.


Se la versione di PHP attualmente in esecuzione è la 8.0,


è possibile impostare la versione PHP in questo modo: 'versione PHP': true.

Tuttavia, se la versione PHP in esecuzione è 7.4 o inferiore


non è possibile utilizzare la sintassi dei parametri denominati per le funzioni, quindi è necessario impostare 'true' per la versione desiderata quando questa viene rilasciata.

Rector supporta PHP 8.3, quindi per specificare PHP 7.4, si procede come segue:


->withPaths([
__DIR__ , // Questa è la directory in cui si trova rector.php.
])



Specifica le regole e le cartelle che non si desidera applicare.

Le cartelle vengono specificate come '/nome_cartella/*'.

I file vengono specificati come 'nome_file'.


Ho aggiunto la regola "SensitiveConstantNameRector".

Rector, quando incontra un indice non definito in un array PHP, non riesce a rilevarlo e lo interpreta come una costante, modificandolo in modo errato. Pertanto, lo si aggiunge alle regole di esclusione.

Queste regole riguardano lo stile del codice, quindi le escludo.


Esecuzione

Ci sono due modi per eseguirlo.

Questo comando visualizza solo le modifiche da apportare nel terminale.

Con un gran numero di file sorgente, è necessario assegnare più memoria, quindi utilizzare l'opzione --memory-limit=2G per specificare la quantità di RAM da utilizzare.


Questo comando modifica direttamente il codice sorgente.

Poiché sono disponibili molte opzioni, è possibile che alcune vengano applicate in modo indesiderato, quindi è necessario controllare le modifiche con Git.



Commenti0