remp / crm-rector
Rector rules for REMP/Crm
Installs: 2 595
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 7
Forks: 1
Open Issues: 0
Type:rector-extension
Requires
- php: ^8.1
- rector/rector: ^0.15.24
This package is auto-updated.
Last update: 2024-11-22 23:11:39 UTC
README
This repository contains Rector rules for upgrade of custom modules used with REMP CRM.
How to use
1. Install package
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.
2. Create rector.php
:
Run command:
vendor/bin/rector init
3. Update rector.php
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.
4. Run Rector:
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.
Sets & rules
Upgrade CRM v0.38 -> CRM v1.0
Check also the CRM 1.0 migration guide.
Sets
- 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+).
Individual rules
\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.
Transform to lazy event listeners
Individual rules
\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
Upgrade CRM v2.* -> CRM v3.0
-
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, ]);