초록 기린

PHP verziófrissítési eszköz: Rector bemutatása

  • Írás nyelve: Koreai
  • Országkód: Minden országcountry-flag
  • Informatika

Létrehozva: 2024-03-24

Létrehozva: 2024-03-24 23:17

A Gnuboard5, egy koreai PHP CMS weboldalán találkoztam néhány bejegyzéssel, amelyek a PHP verziófrissítés utáni, már nem támogatott szintaxis és verzió okozta nehézségekről panaszkodtak.

Ezért keresgéltem egy kicsit, és...

a Reddit-en rábukkantam a Rector nevű eszközre, ami állítólag segít a migrálásban, ezért szeretném bemutatni a használatát.



A PHP 7.0 2015-ös megjelenése óta több PHP migrálási eszköz is megjelent, mint például a PHP CS Fixer és a Rector.

A Rector sokkal könnyebben használhatónak tűnik.

A Rector (kiejtése: Rektó) a PHP 5.3 és 8.2 közötti kódot a kívánt verzióra konvertálja a szintaxis ellenőrzésével és javításával.


Egyetlen hátránya, hogy a Rector statikus analizátor, tehát a futásidőben fellépő hibákat nem képes érzékelni.



A Rector használatához a Composer (PHP csomagkezelő) telepítve kell legyen.

1. Telepítse a Composer-t.

2. Telepítse a Rectort a jelenlegi projektmappába.

3. Hozzon létre egy rector.php konfigurációs fájlt.



rector.php beállítások

A jobb megértés érdekében vegyünk egy konkrét példát.

Tegyük fel, hogy a forráskód PHP 5.3-ban íródott, és a cél PHP 7.4-re történő frissítés.

A Rector verziója 1.0.3.


A RectorConfig::config() függvény a forráskód mappáját és a PHP verziót állítja be.

A withPhpSets függvény a frissíteni kívánt PHP függvényeket határozza meg.


Ha a Rectort futtató PHP verzió 8.0, akkor


így lehet a PHP verziót beállítani: `phpverzió: true`.

De ha a futó PHP verzió 7.4 vagy alacsonyabb,


akkor nem használható a nevesített paraméterek szintaxisa a függvényekben, ezért a kívánt verzió beállításához a `true` értéket kell megadni.

A Rector PHP 8.3-at támogat, így a PHP 7.4 beállításához a következőt kell használni:


->withPaths([
__DIR__ , // A rector.php fájl helye.
])



Itt lehet megadni azokat a szabályokat és mappákat, amelyeket ki akarunk hagyni a frissítésből.

A mappák formátuma: '/mappa_név/*'.

A fájlok formátuma: 'fájl_név'.


A "SensitiveConstantNameRector" szabályt is hozzáadtam a kihagyott szabályokhoz.

A Rector nem képes felismerni a PHP tömbökben lévő definiálatlan indexeket, és csak konstansként értelmezi őket, ami miatt helytelenül módosíthatja a kódot. Ezért adtam hozzá a kihagyott szabályokhoz.

Ezek a szabályok a kód stílusával kapcsolatosak, ezért kihagytam őket.


Futtatás

Kétféleképpen lehet futtatni.

Ez a parancs csak kiírja a konzolra a módosítandó kódrészeket, anélkül, hogy megváltoztatná a fájlokat.

Nagyobb kódbázis esetén sok memóriára van szükség, ezért a `--memory-limit=2G` opcióval megadhatja a használt memória mennyiségét.


Ez a parancs közvetlenül módosítja a forráskódot.

Nagyon sok opció létezik, ezért előfordulhat, hogy nem kívánt beállítások is aktiválódnak, ezért érdemes Git-tel nyomon követni a változásokat.



Hozzászólások0