versionGuard = $versionGuard; } public function refactor(ComposerJson $composerJson): void { foreach ($this->packagesAndVersions as $packageAndVersion) { $composerJson->changePackageVersion( $packageAndVersion->getPackageName(), $packageAndVersion->getVersion() ); } } public function getRuleDefinition(): RuleDefinition { return new RuleDefinition('Change package version `composer.json`', [new ConfiguredCodeSample( <<<'CODE_SAMPLE' { "require-dev": { "symfony/console": "^3.4" } } CODE_SAMPLE , <<<'CODE_SAMPLE' { "require": { "symfony/console": "^4.4" } } CODE_SAMPLE , [ self::PACKAGES_AND_VERSIONS => [new PackageAndVersion('symfony/console', '^4.4')], ] ), ]); } /** * @param array $configuration */ public function configure(array $configuration): void { $packagesAndVersions = $configuration[self::PACKAGES_AND_VERSIONS] ?? []; $this->versionGuard->validate($packagesAndVersions); $this->packagesAndVersions = $packagesAndVersions; } }