remp / crm-rector
REMP/Crm 的 Rector 规则
1.2.0
2024-01-22 09:18 UTC
Requires
- php: ^8.1
- rector/rector: ^0.15.24
This package is auto-updated.
Last update: 2024-09-22 22:46:50 UTC
README
本存储库包含用于Rector的规则,用于升级与REMP CRM一起使用的自定义模块。
如何使用
1. 安装包
composer require --dev remp/crm-rector
注意:Composer 将询问您是否信任插件 rector/extension-installer
。此插件将 CRM 规则安装到 Rector 包中。
2. 创建 rector.php
运行命令
vendor/bin/rector init
3. 更新 rector.php
填写要运行的自定义路径、选项和集合/规则。
例如,要更新到 CRM 1.0,它可能看起来像这样
<?php declare(strict_types=1); use Crm\Utils\Rector\Set\CrmSetList; use Rector\Config\RectorConfig; use Rector\Core\Configuration\Option; return static function (RectorConfig $rectorConfig): void { $parameters = $rectorConfig->parameters(); // paths to refactor $rectorConfig->paths([ __DIR__ . '/app/custom-modules', // path to custom modules __DIR__ . '/composer.json', // root composer -> updates REMP CRM packages automatically ]); // optional settings to automatically import namespaces in changed files $rectorConfig->importNames(); $rectorConfig->disableImportShortClasses(); // set with CRM 1.0 changes; check README for list of sets $rectorConfig->sets([ CrmSetList::CRM_1_0, ]); // set service if you want to run individual rule; check README for list of rules // $services = $rectorConfig->services(); // $services->set(\Crm\Utils\Rector\UpgradeToCrm1\ApiHandlerJsonResponseRector::class); };
集合和规则如下所示。
4. 运行 Rector
vendor/bin/rector process --dry-run
在您审查了计划中的更改后,请不带 --dry-run
运行它
vendor/bin/rector process
使用 vendor/bin/rector --help
获取帮助。注意标志 -vvv
用于详细消息,--clear-cache
和 --xdebug
如果您需要调试 Rector 规则。
集合 & 规则
升级 CRM v0.38 -> CRM v1.0
请参阅CRM 1.0 迁移指南。
集合
- 集合:
Crm\Utils\Rector\Set\CrmSetList::CRM_1_0
包含 CRM 变更和 Nette 规则(3.0,3.1)。 - 集合:
Crm\Utils\Rector\Set\CrmSetList::CRM_1_0_WITHOUT_NETTE
仅包含 CRM 变更。- 您可以从您的
rector.php
中稍后调用 Nette 集合。
- 您可以从您的
- 集合:
Crm\Utils\Rector\Set\CrmSetList::NETTE_ANNOTATIONS_TO_ATTRIBUTES
包含基于 PHPdoc 的注释到 PHP 8.0 属性的转换(自 Nette 3.0+ 以来可用)。
单独的规则
\Crm\Utils\Rector\UpgradeToCrm1\ApiHandlerParametersRector
- 更改实现
Crm\ApiModule\Api\ApiHandlerInterface
接口的 API 处理程序的参数以符合 CRM v1.0。
- 更改实现
\Crm\Utils\Rector\UpgradeToCrm1\ApiHandlerJsonResponseRector
- 将所有
Crm\ApiModule\Api\JsonResponse
实例更改为Tomaj\NetteApi\Response\JsonApiResponse
。
- 将所有
注意:这两个规则都是集合 CRM_1_0
和 CRM_1_0_WITHOUT_NETTE
的部分。这些规则作为单独的规则创建,因为 Rector 的一般规则不足以使用。我们建议运行整个集合。
转换为懒加载事件监听器
单独的规则
\Crm\Utils\Rector\TransformToLazyEventListeners\TransformToLazyEventListeners
- 将注册事件方法更改为新的懒加载变体,并从所有事件注册中删除
$this->getInstance()
调用。
- 将注册事件方法更改为新的懒加载变体,并从所有事件注册中删除
升级 CRM v2.* -> CRM v3.0
-
集合:
Crm\Utils\Rector\Set\CrmSetList::CRM_3_0_PSR4
- 包含在类名/命名空间更改后对命名空间的重命名,以遵循 PSR4 标准。用法
$rectorConfig->sets([ CrmSetList::CRM_3_0_PSR4, ]);