Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork737
Instant Upgrades and Automated Refactoring of any PHP 5.3+ code
License
rectorphp/rector
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Rector instantly upgrades and refactors the PHP code of your application. It can help you in 2 major areas:
Rector now supports upgrades from PHP 5.3 to 8.4 and major open-source projects likeSymfony,PHPUnit, andDoctrine. Do you want tobe constantly on the latest PHP and Framework without effort?
Use Rector to handleinstant upgrades for you.
Do you have code quality you need, but struggle to keep it with new developers in your team? Do you want to see smart code-reviews even when every senior developers sleeps?
Add Rector to your CI and let itcontinuously refactor your code and keep the code quality high.
Read ourblogpost to see how to set up automated refactoring.
composer require rector/rector --dev
There are 2 main ways to use Rector:
- asingle rule, to have the change under control
- or group of rules calledsets
To use them, create arector.php in your root directory:
vendor/bin/rector
And modify it:
useRector\Config\RectorConfig;useRector\TypeDeclaration\Rector\Property\TypedPropertyFromStrictConstructorRector;return RectorConfig::configure()// register single rule ->withRules([ TypedPropertyFromStrictConstructorRector::class ])// here we can define, what prepared sets of rules will be applied ->withPreparedSets( deadCode:true, codeQuality:true );
Then dry run Rector:
vendor/bin/rector src --dry-run
Rector will show you diff of files that itwould change. Tomake the changes, drop--dry-run:
vendor/bin/rector src
Are you curious, how Rector works internally, how to create your own rules and test them and why Rector was born?ReadRector - The Power of Automated Refactoring that will take you step by step through the Rector setup and how to create your own rules.
The Rector community is powerful thanks to active maintainers who take care of Rector sets for particular projects.
Among there projects belong:
- palantirnet/drupal-rector
- craftcms/rector
- FriendsOfShopware/shopware-rector
- sabbelasichon/typo3-rector
- sulu/sulu-rector
- efabrica-team/rector-nette
- Sylius/SyliusRector
- CoditoNet/rector-money
- laminas/laminas-servicemanager-migration
- cakephp/upgrade
- driftingly/rector-laravel
- contao/contao-rector
- php-static-analysis/rector-rule
- ibexa/rector
Rector is a tool thatwe develop and share for free, so anyone can automate their refactoring. But not everyone has dozens of hours to understand complexity of abstract-syntax-tree in their own time.That's why we provide commercial support - to save your time.
Would you like to apply Rector on your code base but don't have time for the struggle with your project?Hire us to get there faster.
Seethe contribution guide or go to development repositoryrector/rector-src.
You can use--debug option, that will print nested exceptions output:
vendor/bin/rector src/Controller --dry-run --debug
Or with Xdebug:
- Make sureXdebug is installed and configured
- Add
--xdebugoption when running Rector
vendor/bin/rector src/Controller --dry-run --xdebug
To assist with simple debugging Rector provides 2 helpers to pretty-print AST-nodes:
usePhpParser\Node\Scalar\String_;$node =newString_('hello world!');// prints node to string, as PHP code displays itprint_node($node);
Rector usesnikic/php-parser, built on technology called anabstract syntax tree (AST). An AST doesn't know about spaces and when written to a file it produces poorly formatted code in both PHP and docblock annotations.
Rector in parallel mode will work most of the times for most OS. On Windows, you may encounter issues unresolvable despite of following theTroubleshooting Parallel guide. In such case, check if you are using Powershell 7 (pwsh). Change your terminal to command prompt (cmd) or bash for Windows.
Your project needs to have a coding standard tool and a set of formatting rules, so it can make Rector's output code nice and shiny again.
We're usingECS withthis setup.
When you apply changes to files with PHP + HTML content, you may need to manually verify the changed file after apply the changes.
About
Instant Upgrades and Automated Refactoring of any PHP 5.3+ code
Topics
Resources
License
Code of conduct
Contributing
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.