rector/rector-symfony
Composer 安装命令:
composer require rector/rector-symfony
包简介
Rector upgrades rules for Symfony Framework
README 文档
README
See available Symfony rules
Install
This package is already part of rector/rector package, so it works out of the box.
All you need to do is install the main package, and you're good to go:
composer require rector/rector --dev
Use Sets
To add a set to your config, use ->withPreparedSets method, and pick one :
use Rector\Config\RectorConfig; return RectorConfig::configure() ->withPreparedSets(symfonyCodeQuality: true) ->withComposerBased(symfony: true);
If you're on PHP 7.x, you can use withSets() instead, for symfonyCodeQuality set, so you can define:
use Rector\Config\RectorConfig; use Rector\Symfony\Set\SymfonySetList; return RectorConfig::configure() ->withSets([ SymfonySetList::SYMFONY_CODE_QUALITY, ]);
See documentation for more.
Configuration
Provide Symfony XML Service List
Some rules like StringFormTypeToClassRector need access to your Symfony container dumped XML. It contains list of form types with their string names, so it can convert them to class references.
How to add it? Check your var/cache/ directory and find the XML file for your test env. Then add it in rector.php:
use Rector\Config\RectorConfig; return RectorConfig::configure() ->withSymfonyContainerXml(__DIR__ . '/var/cache/dev/App_KernelDevDebugContainer.xml');
That's it! Now you can run the StringFormTypeToClassRector and get your form classes converted safely.
Provide Symfony PHP Container
Some rules like AddRouteAnnotationRector require additional access to your Symfony container. The rule takes container service "router" to load metadata about your routes.
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);
The tests/symfony-container.php should provide your dependency injection container. The way you create the container is up to you. It can be as simple as:
// tests/symfony-container.php use App\Kernel; require __DIR__ . '/bootstrap.php'; $appKernel = new Kernel('test', false); $appKernel->boot(); return $appKernel->getContainer();
The version of your Symfony can be quite old. Public methods are stable from Symfony 2 to through 6 and the router have not changed much. The AddRouteAnnotationRector rule was tested and developed on Symfony 2.8 project.
Note
In this case, container cache PHP file located in /var/cache/<env>/appProjectContainer.php is not enough. Why? Few services require Kernel to be set, e.g. routes that are resolved in lazy way. This container file is only dumped without Kernel and would crash with missing "kernel" error. That's why the rule needs full blown container.
Learn Rector Faster
Rector is a tool that we develop and share for free, so anyone can save hundreds of hours on refactoring. But not everyone has time to understand Rector and AST complexity. You have 2 ways to speed this process up:
- read a book - The Power of Automated Refactoring
- hire our experienced team to improve your code base
Both ways support us to and improve Rector in sustainable way by learning from practical projects.
rector/rector-symfony 适用场景与选型建议
rector/rector-symfony 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.87M 次下载、GitHub Stars 达 239, 最近一次更新时间为 2021 年 03 月 18 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 rector/rector-symfony 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 rector/rector-symfony 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 1.87M
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 239
- 点击次数: 11
- 依赖项目数: 1
- 推荐数: 1
其他信息
- 授权协议: MIT
- 更新时间: 2021-03-18