Rector: upgrade PHP aplikace
28. března 2025V dynamickém světě PHP vývoje se často setkáváme s nutností refaktorovat kód, aktualizovat ho na novější verze PHP nebo přizpůsobit změnám v používaných knihovnách a frameworcích. Ruční úpravy mohou být časově náročné a náchylné k chybám, a právě zde přichází na pomoc Rector. Tento nástroj umožňuje automatizovanou transformaci kódu pomocí pravidel, která lze snadno konfigurovat a rozšiřovat. V tomto článku se podíváme na to jak Rector nainstalovat a jak ho efektivně využít při modernizaci PHP aplikací.
PHP nástroj Rector je mocný automatizovaný refaktorovací nástroj, který pomáhá s migrací kódu mezi verzemi PHP, aktualizací frameworků a zlepšováním kvality kódu. Díky předem připraveným pravidlům i možnosti vytvářet vlastní transformace umožňuje vývojářům efektivně modernizovat kód bez nutnosti ruční úpravy každého souboru. A to je důvod proč šetří čas a tedy i peníze.
Typické základní příklady, co za mě Rector udělá
Přiklady toho co Rector umí převest automaticky an novější verzi, což ušetří spoustu ruční práce!
1. Konverze starého zápisu polí na moderní zápis (array()
→ []
)
Pokud používáš PHP 5.4 a novější, Rector ti může přepsat starý zápis polí na nový:
Původní kód:
$array = array(1, 2, 3);
Po refaktoringu:
$array = [1, 2, 3];
2. Převod starých metod konstruktoru (__construct
místo názvu třídy)
V PHP 4 se používaly konstruktory se stejným názvem jako třída, což je v moderních verzích PHP zastaralé. Rector je umí přepsat.
Původní kód:
class MyClass {
function MyClass() {
echo "Hello";
}
}
Po refaktoringu:
class MyClass {
function __construct() {
echo "Hello";
}
}
3. Nahrazení zastaralých funkcí
Například each()
byla odstraněna v PHP 8.0, takže Rector ji může nahradit moderním foreach
.
Původní kód:
while (list($key, $value) = each($array)) {
echo "$key => $value";
}
Po refaktoringu:
foreach ($array as $key => $value) {
echo "$key => $value";
}
4. Přidání přísnějších typů (PHP 7.4+)
Rector umí doplnit typové deklarace pro argumenty a návratové hodnoty metod.
Původní kód:
function add($a, $b) {
return $a + $b;
}
Po refaktoringu:
function add(int $a, int $b): int {
return $a + $b;
}
5. Převod na ::class
místo řetězcových názvů tříd
Moderní PHP umožňuje používat ::class
místo názvů tříd jako řetězců.
Původní kód:
$className = "MyClass";
$obj = new $className();
Po refaktoringu:
$className = MyClass::class;
$obj = new $className();
Toto jsou jen základní příklady – Rector umí provést mnohem více úprav, například automatické přizpůsobení kódu pro novější verze PHP, odstranění deprecated funkcí a přepisování Symfony/Laravel kódu podle doporučených standardů.
6. Převod z anotací na atributy (Doctrine, Symfony, PHP 8+)
PHP 8 přineslo nativní atributy (attributes), které nahrazují tradiční PHPDoc anotace. Rector ti pomůže automaticky přepsat staré anotace na moderní atributy.
Původní kód (s anotacemi):
use Doctrine\ORM\Mapping as 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;
}
Po refaktoringu na atributy:
use Doctrine\ORM\Mapping as 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;
}
Následně ještě musíte upravit konfiguraci Doctrine, aby používala místo anotací atributy a můžete vyzkoušet aplikaci, jak funguje po změně z anotací na atributy.
Převod s anotací na atributy je nejčastější úkon, ke kterému Rector používám. Můžete se jednat jak u převod Doctrine entit tak anotace controllerů v Symfony Frameworku. Pokud by jste s tím také potřebovali pomoci neváhejte mě kontaktovat.
Podrobnosti k tomuto tématu najdete v článku How to Upgrade Annotations to Attributes
✅ Další výhody převodu anotací na atributy:
- Kratší a přehlednější zápis
- Není potřeba závislost na PHPDoc parseru
- Atributy jsou součástí jazyka, což zvyšuje stabilitu a výkon
Instalace Rectoru
Rector je opensource a šířen pod svobodnou licencí MIT
Instalaci Rectoru můžeme provést v rámci projektu, ale může být nainstalován kdekoli jinde – jen potřebujete dostatečně novou verzi PHP. Takže pokud máte projekt se starou verzí PHP, tak Rector nemžete nainstalovat a spouštět v rámci projektu, ale musíte ho nainstalovat stranou a spouštět s jinou novější verzí PHP.
Rector lze nainstalovat do projektu pomocí Composeru. Doporučuje se instalace jako dev dependency, protože jej obvykle využijete jen během vývoje a refaktoringu.
composer require rector/rector --dev
Po instalaci si můžete vytvořit konfigurační soubor, například:
vendor/bin/rector init
Tento příkaz vygeneruje základní soubor rector.php
, kde můžete definovat pravidla pro refaktoring.

Spuštění Rectoru
vendor/bin/rector process src
Tento příkaz provede refaktoring všech PHP souborů ve složce src
podle nastavených pravidel v rector.php
.
Spuštění bez aplikování uprav na zdrojový kód
vendor/bin/rector process src --dry-run
Video
Video s popisem nástroje Rector a praktickou ukázkou jak Rector použít pro refaktoring aplikace.
Články na podobné téma
Programovací jazyk Go
Analýza zadání a nacenění vývoje softwarového projektu
Python program na ovládání Dockeru pomocí API
Jak použít aplikaci MailCatcher pro testování emailů
Návod: Python OpenAI API
Vytvoření WebSocket webové aplikace a nastavení proxy
Řízení projektů: Agilní vývoj softwaru
Jak provozovat staré PHP aplikace
Co by měl umět dobrý programátor
Programovací jazyk Rust
NodeJS: vývoj, konfigurace serveru
Nette security bug CVE-2020-15227
Jak porovnat dvě stejné databáze?
REST API: API platform
Vlastní web a mail hosting se softwarem ISP Config
Programovní v SQL: PostgreSQL, MySQL/MariaDB
HTTPS: zabezpečený web
NoSQL databáze Mongo DB
Připojení k Microsoft SQL Serveru z Linuxu
Co je pracovní náplň programátora
Lokalizace aplikací v jazyce Python
Jaký mail a web hosting vybrat
How to make wireless low power Arduino
Digispark - Programujte mikrokontrolér Atmel ATtiny pomocí Arduino IDE
Program Roulette
Vývoj pro procesory ARM s Arduino IDE
Wireless low power Arduino
Pyradio - Python program for receive Internet radio with text user inteface
UPS monitor pro Android
Bezdrátový bateriově napájený WiFi teploměr
Jak programovat WiFi procesor ESP8266
Comparison IQRF vs Wireless Arduino
Jakou platformu zvolit pro eshop? Například Prestashop
Development kits and gateways for wireless platform IQRF
OpenStreetMap a GPS trasy v mapě na webu
Quickplay
Java program pro přehledné monitorování záložních zdrojů
Čipové kontaktní a bezkontaktní karty Java Card OpenPlatform
Otevřený chytrý telefon s Linuxem - Openmoko Neo FreeRunner
Vývoj pro bezdrátové moduly s procesorem PIC pod GNU/Linux - IQRF
Grafický program pro embeded/mobilní zařízení na vyhledávání dopravního spoje.
O programování a ruzné programy v jazyce Java, Python a dalších
Java program a applet Kalkulačka
Java program na výpočet kvadratické rovnice
Odběr novinek
Pokud máte zájem dostávat příležitostně na email novinky.
Můžete se vyplněním emailu registrovat k
odběru novinek.
+