Updated Rector to commit 1e028eba0d8b7c131423f1d98cd2fde5f0838b03

1e028eba0d [upgrading] link phpstan + php-parser upgrade guides (#6542)
This commit is contained in:
Tomas Votruba 2024-12-10 10:32:16 +00:00
parent bb7236221c
commit e5d26b0955
3 changed files with 99 additions and 4 deletions

View File

@ -8,7 +8,7 @@ Rector instantly upgrades and refactors the PHP code of your application. It ca
### 1. Instant Upgrades
Rector now supports upgrades from PHP 5.3 to 8.2 and major open-source projects like [Symfony](https://github.com/rectorphp/rector-symfony), [PHPUnit](https://github.com/rectorphp/rector-phpunit), and [Doctrine](https://github.com/rectorphp/rector-doctrine). Do you want to **be constantly on the latest PHP and Framework without effort**?
Rector now supports upgrades from PHP 5.3 to 8.4 and major open-source projects like [Symfony](https://github.com/rectorphp/rector-symfony), [PHPUnit](https://github.com/rectorphp/rector-phpunit), and [Doctrine](https://github.com/rectorphp/rector-doctrine). Do you want to **be constantly on the latest PHP and Framework without effort**?
Use Rector to handle **instant upgrades** for you.
@ -162,4 +162,4 @@ We're using [ECS](https://github.com/symplify/easy-coding-standard) with [this s
### May cause unexpected output on File with mixed PHP+HTML content
When you apply changes to File(s) thas has mixed PHP+HTML content, you may need to manually verify the changed file after apply the changes.
When you apply changes to files with PHP + HTML content, you may need to manually verify the changed file after apply the changes.

95
UPGRADING.md Normal file
View File

@ -0,0 +1,95 @@
# Upgrading from Rector 1.x to 2.0
## PHP version requirements
Rector now uses PHP 7.4 or newer to run.
<br>
## Rector now uses PHP-Parser 5
See [upgrading guide](https://github.com/nikic/PHP-Parser/blob/master/UPGRADE-5.0.md) for PHP-Parser.
<br>
## Rector now uses PHPStan 2
See [upgrading guide](https://github.com/phpstan/phpstan-src/blob/2.0.x/UPGRADING.md) for PHPStan.
<br>
## Upgrade for custom Rules writers
### 1. `AbstractScopeAwareRector` is removed, use `AbstractRector` instead
The `Rector\Rector\AbstractScopeAwareRector` was too granular to fetch single helper object. It made creating new custom rules ambiguous, one layer more complex and confusing. This class has been removed in favor of standard `AbstractRector`. The `Scope` object can be fetched via `ScopeFetcher`.
**Before**
```php
use Rector\Rector\AbstractScopeAwareRector;
final class SimpleRector extends AbstractScopeAwareRector
{
public function refactorWithScope(Node $node, Scope $scope): ?Node
{
// ...
}
}
```
**After**
```php
use Rector\Rector\AbstractRector;
use Rector\PHPStan\ScopeFetcher;
final class SimpleRector extends AbstractRector
{
public function refactor(Node $node): ?Node
{
if (...) {
// this allow to fetch scope only when needed
$scope = ScopeFetcher::fetch($node);
}
// ...
}
}
```
### 2. `AbstractRector` get focused on code, the `getRuleDefinition()` is no longer required
Core rules need documentation, so people can read their feature and [search through](https://getrector.com/find-rule) them. Yet for writing custom rules and local rules, its not necessary. People often filled it empty, just to make Rector happy.
This is no longer needed. Now The `getRuleDefinition()` method has been removed:
```diff
use Rector\Rector\AbstractRector;
-use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
-use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
final class SimpleRector extends AbstractRector
{
- public function getRuleDefinition(): RuleDefinition
- {
- return new RuleDefinition('// @todo fill the description', [
- new CodeSample(
- <<<'CODE_SAMPLE'
-// @todo fill code before
-CODE_SAMPLE
- ,
- <<<'CODE_SAMPLE'
-// @todo fill code after
-CODE_SAMPLE
- ),
- ]);
- }
// valuable code here
}
```
If you need description yourself to understand rule after many months, use the common place for documentation - docblock above class.

View File

@ -19,12 +19,12 @@ final class VersionResolver
* @api
* @var string
*/
public const PACKAGE_VERSION = '481591a08a2780de32ec405046ab7b2920d72349';
public const PACKAGE_VERSION = '1e028eba0d8b7c131423f1d98cd2fde5f0838b03';
/**
* @api
* @var string
*/
public const RELEASE_DATE = '2024-12-10 09:44:15';
public const RELEASE_DATE = '2024-12-10 11:29:51';
/**
* @var int
*/