remp/crm-rector

REMP/Crm 的 Rector 规则

安装次数: 2,593

依赖项: 0

建议者: 0

安全性: 0

星标: 0

关注者: 7

分支: 0

开放问题: 0

类型:rector-extension

1.2.0 2024-01-22 09:18 UTC

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_1_0CRM_1_0_WITHOUT_NETTE 的部分。这些规则作为单独的规则创建,因为 Rector 的一般规则不足以使用。我们建议运行整个集合。

转换为懒加载事件监听器

单独的规则

升级 CRM v2.* -> CRM v3.0

  • 集合:Crm\Utils\Rector\Set\CrmSetList::CRM_3_0_PSR4 - 包含在类名/命名空间更改后对命名空间的重命名,以遵循 PSR4 标准。

    用法

    $rectorConfig->sets([
        CrmSetList::CRM_3_0_PSR4,
    ]);