phauthentic / rector-rules
Rector Rules
dev-master
2026-03-09 19:00 UTC
Requires
- php: ^8.2
- rector/rector: ^2.3
Requires (Dev)
- phpstan/phpstan: ^2.0
- phpunit/phpunit: 12
This package is auto-updated.
Last update: 2026-04-04 01:01:09 UTC
README
Custom Rector rules for adding final/readonly modifiers and extracting interfaces based on FQCN regex patterns.
Requirements
- PHP 8.2+
- Rector ^2.3
Installation
composer require phauthentic/rector-rules
Rules
AddFinalByRegexRector
Adds final to classes whose fully qualified class name matches one of the configured regex patterns.
Configuration:
// rector.php use Phauthentic\RectorRules\Rector\Class_\AddFinalByRegexRector; use Rector\Config\RectorConfig; return RectorConfig::configure() ->withPaths(['src']) ->withConfiguredRule(AddFinalByRegexRector::class, [ '#^App\\\\Domain\\\\#', '#^App\\\\Service\\\\#', ]);
Or with explicit patterns key:
->withConfiguredRule(AddFinalByRegexRector::class, [ 'patterns' => ['#^App\\\\Domain\\\\#'], ])
AddReadonlyByRegexRector
Adds readonly to classes whose FQCN matches one of the configured regex patterns. Requires PHP 8.2+.
Configuration:
use Phauthentic\RectorRules\Rector\Class_\AddReadonlyByRegexRector; ->withConfiguredRule(AddReadonlyByRegexRector::class, [ '#^App\\\\ValueObject\\\\#', ])
ExtractInterfaceByRegexRector
Extracts methods from matching classes into interfaces and adds implements to the class. Creates interface files when missing.
Configuration:
use Phauthentic\RectorRules\Rector\Class_\ExtractInterfaceByRegexRector; ->withConfiguredRule(ExtractInterfaceByRegexRector::class, [ 'interface_name_template' => '{namespace}\\{shortName}Interface', 'extract' => [ [ 'class_regex' => '#^App\\\\Service\\\\#', 'methods' => [ 'exact' => ['handle', 'supports'], 'regex' => ['#^get[A-Z].*#'], ], ], [ 'class_regex' => '#^App\\\\Contract\\\\#', // methods omitted => extract all public methods (except __construct) ], ], ])
- interface_name_template: Optional. Placeholders:
{namespace},{shortName}. Default:{namespace}\{shortName}Interface - extract: List of entries, each with:
- class_regex: Regex to match class FQCN
- methods: Optional. If omitted, all public non-magic methods are extracted.
- exact: List of exact method names
- regex: List of regex patterns to match method names
Development
composer install
composer test
composer phpstan