Instant Upgrades and Automated Refactoring of any PHP 5.3+ code
Go to file
2017-09-07 16:04:20 +02:00
bin cs fixes, drop duplicated NodeVisitor 2017-08-12 13:34:40 +02:00
packages [TriggerExtractor] add Scope 2017-09-07 16:04:20 +02:00
src [TriggerExtractor] add Scope 2017-09-07 16:04:20 +02:00
tests [Nette] add NetteConfiguratorRector 2017-09-06 23:29:05 +02:00
.coveralls.yml init meta files 2017-07-15 19:12:04 +02:00
.gitignore init 2017-07-15 19:01:21 +02:00
.travis.yml simplify travis.yml 2017-08-15 15:19:34 +02:00
CODE_OF_CONDUCT.md init meta files 2017-07-15 19:12:04 +02:00
composer.json composer: bump to ECS 2.3 2017-09-06 22:56:35 +02:00
easy-coding-standard.neon cs fixes 2017-09-07 06:10:54 +02:00
LICENSE init meta files 2017-07-15 19:12:04 +02:00
phpstan.neon fix cs and phpstan 2017-09-06 12:53:24 +02:00
phpunit.xml add /packages directory to static analysis check 2017-08-20 17:20:33 +02:00
README.md README: details 2017-09-06 19:37:07 +02:00

Rector - Reconstruct your Legacy Code to Modern Codebase

Build Status Coverage Status

This tool will upgrade your application for you.

All Reconstructors

Nette

  • FormCallbackRector
  • InjectPropertyRector
  • HtmlAddMethodRector
  • NetteObjectToSmartTraitRector
  • RemoveConfiguratorConstantsRector
  • and many others

Symfony

  • NamedServicesToConstructorNodeTraverser
  • and many others

Install

composer require rector/rector --dev

Use (WIP)

vendor/bin/rector reconstruct src --framework Nette --to-version 2.4
vendor/bin/rector reconstruct src --framework Symfony --to-version 3.3

How to Add New Rector

Just extend Rector\Rector\AbstractRector. It will prepare 4 methods - 2 informative and 2 processing the node.

/**
 * A project that is related to this.
 * E.g "Nette", "Symfony"
 * Use constants from @see SetNames, if possible.
 */
public function getSetName(): string
{
}

/**
 * Version this deprecations is active since.
 * E.g. 2.3.
 */
public function sinceVersion(): float
{
}


public function isCandidate(Node $node): bool
{
}

public function refactor(Node $node): ?Node
{
}
  1. Put it under namespace Rector\Contrib\<set>; namespace
<?php declare(strict_types=1);

namespace Rector\Contrib\Symfony;
    
use Rector\Rector\AbstractRector;

final class MyRector extends AbstractRector
{
    // ...
}
  1. Add a Test Case

  2. Submit PR

  3. :check:

How to Contribute

Just follow 3 rules:

  • 1 feature per pull-request

  • New feature needs tests

  • Tests, coding standard and PHPStan checks must pass

    composer all
    

    Don you need to fix coding standards? Run:

    composer fix-cs
    

We would be happy to merge your feature then.