rector / rector-symfony
Rector 升级 Symfony 框架的规则
Requires
- php: >=8.2
- ext-xml: *
Requires (Dev)
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^1.11
- phpstan/phpstan-webmozart-assert: ^1.2
- phpunit/phpunit: ^10.5
- rector/rector-src: dev-main
- rector/type-perfect: ^0.1.6
- symfony/config: ^6.4
- symfony/dependency-injection: ^6.4
- symfony/http-kernel: ~6.3
- symfony/routing: ^6.4
- symfony/security-core: ^6.4
- symfony/security-http: ^6.4
- symfony/validator: ^6.4
- symplify/easy-coding-standard: ^12.3
- symplify/phpstan-extensions: ^11.1
- symplify/phpstan-rules: ^13.0
- symplify/rule-doc-generator: ^12.2.2
- symplify/vendor-patches: ^11.2
- tomasvotruba/class-leak: ^0.2
- tracy/tracy: ^2.10
- dev-main
- 1.1.0
- 1.0.0
- 0.19.0
- 0.16.2
- 0.16.1
- 0.16.0
- 0.15.0
- 0.14.3
- 0.14.2
- 0.14.1
- 0.14.0
- 0.13.1
- 0.13.0
- 0.12.1
- 0.12.0
- 0.11.50
- 0.11.49
- 0.11.48
- 0.11.47
- 0.11.46
- 0.11.45
- 0.11.44
- 0.11.43
- 0.11.42
- 0.11.41
- 0.11.40
- 0.11.39
- 0.11.38
- 0.11.37
- 0.11.36
- 0.11.35
- 0.11.34
- 0.11.33
- 0.11.31
- 0.11.30
- 0.11.29
- 0.11.28
- 0.11.27
- 0.11.26
- 0.11.24
- 0.11.23
- 0.11.22
- 0.11.21
- 0.11.20
- 0.11.19
- 0.11.18
- 0.11.17
- 0.11.16
- 0.11.15
- 0.11.14
- 0.11.13
- 0.11.12
- 0.11.10
- 0.11.9
- 0.11.8
- 0.11.7
- 0.11.6
- 0.11.5
- 0.11.4
- 0.11.3
- 0.11.2
- 0.11.1
- 0.11.0
- 0.10.6
- 0.10.5
- 0.10.4
- 0.10.3
- 0.10.2
- 0.10.1
- 0.10.0
- dev-tv-command-attribute
- dev-tv-depre-command-lazy
- dev-tv-symfony-7
- dev-tv-laravel-di
This package is auto-updated.
Last update: 2024-09-18 08:18:29 UTC
README
查看可用的 Symfony 规则
安装
此包已经是 rector/rector 包的一部分,所以它可以直接使用。
您需要做的只是安装主包,然后就可以开始了
composer require rector/rector --dev
使用集
要添加集到您的配置中,使用 Rector\Symfony\Set\SymfonySetList
类并选择其中一个常量
use Rector\Config\RectorConfig; use Rector\Symfony\Set\SymfonySetList; return RectorConfig::configure() ->withSymfonyContainerXml(__DIR__ . '/var/cache/dev/App_KernelDevDebugContainer.xml') ->withSets([ SymfonySetList::SYMFONY_62, SymfonySetList::SYMFONY_CODE_QUALITY, SymfonySetList::SYMFONY_CONSTRUCTOR_INJECTION, ]);
配置
提供 Symfony XML 服务列表
一些规则如 StringFormTypeToClassRector
需要访问您的 Symfony 容器导出的 XML。它包含表单类型的字符串名称列表,因此可以将它们转换为类引用。
如何添加它?检查您的 var/cache/
目录并找到您的测试环境的 XML 文件。然后将其添加到 rector.php
use Rector\Config\RectorConfig; return RectorConfig::configure() ->withSymfonyContainerXml(__DIR__ . '/var/cache/dev/App_KernelDevDebugContainer.xml');
就这样!现在您可以使用 StringFormTypeToClassRector
并安全地将您的表单类转换为引用。
提供 Symfony PHP 容器
一些规则如 AddRouteAnnotationRector
需要额外的访问您的 Symfony 容器。该规则使用容器服务 "router" 加载有关您的路由的元数据。
use Rector\Config\RectorConfig; use Rector\Symfony\Bridge\Symfony\Routing\SymfonyRoutesProvider; use Rector\Symfony\Configs\Rector\ClassMethod\AddRouteAnnotationRector; use Rector\Symfony\Contract\Bridge\Symfony\Routing\SymfonyRoutesProviderInterface; return RectorConfig::configure() ->withSymfonyContainerPhp(__DIR__ . '/tests/symfony-container.php') ->registerService(SymfonyRoutesProvider::class, SymfonyRoutesProviderInterface::class);
tests/symfony-container.php
应该提供您的依赖注入容器。您创建容器的具体方法由您决定。它可以非常简单,如下所示
// tests/symfony-container.php use App\Kernel; require __DIR__ . '/bootstrap.php'; $appKernel = new Kernel('test', false); $appKernel->boot(); return $appKernel->getContainer();
您的 Symfony 版本可能相当旧。从 Symfony 2 到 6 的公共方法是稳定的,并且路由没有太大变化。该 AddRouteAnnotationRector
规则已在 Symfony 2.8 项目上进行了测试和开发。
注意:在这种情况下,容器缓存 PHP 文件位于 /var/cache/<env>/appProjectContainer.php
中不足以使用。为什么?一些服务需要设置 Kernel,例如以懒加载方式解析的路由。此容器文件仅导出没有 Kernel 的,[链接](https://github.com/symfony/symfony/issues/19840) 会因为缺少 "kernel" 错误而崩溃。这就是为什么规则需要完整的容器。
更快地学习 Rector
Rector 是一个我们开发和免费分享的工具,任何人都可以通过它节省数百小时的重构时间。但并非每个人都有时间理解 Rector 和 AST 的复杂性。您有两种方法可以加快这一过程
这两种方式都支持我们以可持续的方式通过从实际项目中学习来改进 Rector。