This repository contains Rector rules for upgrade of custom modules used with REMP CRM.
composer require --dev remp/crm-rector
Note: Composer will ask if you trust plugin rector/extension-installer
. This plugin installs CRM rules into Rector package.
Run command:
vendor/bin/rector init
Fill custom paths & options & sets/rules you want to run.
E.g. to update to CRM 1.0 it could look like this:
<?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);
};
Sets and rules are listed below.
vendor/bin/rector process --dry-run
After you reviewed planned changes, run it without --dry-run
:
vendor/bin/rector process
Use vendor/bin/rector --help
for help. Notable flags are -vvv
for verbose messages, --clear-cache
and --xdebug
if you need to debug rector rules.
Check also the CRM 1.0 migration guide.
- Set:
Crm\Utils\Rector\Set\CrmSetList::CRM_1_0
contains CRM changes and Nette rules (3.0, 3.1). - Set:
Crm\Utils\Rector\Set\CrmSetList::CRM_1_0_WITHOUT_NETTE
contains only CRM changes.- You can call Nette sets from your
rector.php
later.
- You can call Nette sets from your
- Set:
Crm\Utils\Rector\Set\CrmSetList::NETTE_ANNOTATIONS_TO_ATTRIBUTES
contains transformation of PHPdoc-based annotations to PHP 8.0 attributes (available since Nette 3.0+).
\Crm\Utils\Rector\UpgradeToCrm1\ApiHandlerParametersRector
- Changes parameters of Api handlers which implement interface
Crm\ApiModule\Api\ApiHandlerInterface
to CRM v1.0.
- Changes parameters of Api handlers which implement interface
\Crm\Utils\Rector\UpgradeToCrm1\ApiHandlerJsonResponseRector
- Changes all instances of
Crm\ApiModule\Api\JsonResponse
toTomaj\NetteApi\Response\JsonApiResponse
.
- Changes all instances of
Note: Both these rules are part of sets CRM_1_0
and CRM_1_0_WITHOUT_NETTE
. These are created as individual rules because Rector's general rules were not sufficient. We recommend running whole set.
\Crm\Utils\Rector\TransformToLazyEventListeners\TransformToLazyEventListeners
- Changes register events method to new lazy variant and removes
$this->getInstance()
call from all event registrations.
- Changes register events method to new lazy variant and removes
-
Set:
Crm\Utils\Rector\Set\CrmSetList::CRM_3_0_PSR4
- contains namespace renames after class names / namespaces were changed to follow PSR4 standard.Usage:
$rectorConfig->sets([ CrmSetList::CRM_3_0_PSR4, ]);