[DX] Explicitly inject visibility manipulator service instead of parent constructor (#1298)

This commit is contained in:
Tomas Votruba 2021-11-24 13:44:29 +03:00 committed by GitHub
parent 3d49ef2015
commit 0e96615c36
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 107 additions and 13 deletions

View File

@ -16,6 +16,7 @@ use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\MethodName;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use ReflectionMethod;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@ -27,6 +28,11 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
*/
final class MakeInheritedMethodVisibilitySameAsParentRector extends AbstractRector
{
public function __construct(
private VisibilityManipulator $visibilityManipulator
) {
}
public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition('Make method visibility same as parent one', [

View File

@ -7,6 +7,7 @@ namespace Rector\DowngradePhp71\Rector\ClassConst;
use PhpParser\Node;
use PhpParser\Node\Stmt\ClassConst;
use Rector\Core\Rector\AbstractRector;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@ -17,6 +18,11 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
*/
final class DowngradeClassConstantVisibilityRector extends AbstractRector
{
public function __construct(
private VisibilityManipulator $visibilityManipulator,
) {
}
public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition(

View File

@ -9,6 +9,7 @@ use PhpParser\Node\Stmt\ClassMethod;
use PhpParser\Node\Stmt\Trait_;
use Rector\Core\Rector\AbstractRector;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@ -17,6 +18,11 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
*/
final class DowngradeAbstractPrivateMethodInTraitRector extends AbstractRector
{
public function __construct(
private VisibilityManipulator $visibilityManipulator,
) {
}
public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition(

View File

@ -7,6 +7,7 @@ namespace Rector\DowngradePhp81\Rector\ClassConst;
use PhpParser\Node;
use PhpParser\Node\Stmt\ClassConst;
use Rector\Core\Rector\AbstractRector;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@ -17,6 +18,11 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
*/
final class DowngradeFinalizePublicClassConstantRector extends AbstractRector
{
public function __construct(
private VisibilityManipulator $visibilityManipulator,
) {
}
public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition('Remove final from class constants', [

View File

@ -10,6 +10,7 @@ use PhpParser\Node\Stmt\Property;
use PHPStan\PhpDocParser\Ast\PhpDoc\GenericTagValueNode;
use PHPStan\PhpDocParser\Ast\PhpDoc\PhpDocTagNode;
use Rector\Core\Rector\AbstractRector;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@ -25,6 +26,11 @@ final class DowngradeReadonlyPropertyRector extends AbstractRector
*/
private const TAGNAME = 'readonly';
public function __construct(
private VisibilityManipulator $visibilityManipulator,
) {
}
/**
* @return array<class-string<Node>>
*/

View File

@ -18,6 +18,7 @@ use Rector\Core\Rector\AbstractRector;
use Rector\Generics\ValueObject\GenericClassMethodParam;
use Rector\Naming\Naming\PropertyNaming;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
use Webmozart\Assert\Assert;
@ -39,7 +40,8 @@ final class GenericClassMethodParamRector extends AbstractRector implements Conf
public function __construct(
private PhpDocTypeChanger $phpDocTypeChanger,
private PropertyNaming $propertyNaming
private PropertyNaming $propertyNaming,
private VisibilityManipulator $visibilityManipulator,
) {
}

View File

@ -8,6 +8,7 @@ use PhpParser\Node;
use PhpParser\Node\Stmt\Property;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@ -17,6 +18,11 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
*/
final class VarToPublicPropertyRector extends AbstractRector implements MinPhpVersionInterface
{
public function __construct(
private VisibilityManipulator $visibilityManipulator,
) {
}
public function provideMinPhpVersion(): int
{
return PhpVersionFeature::PROPERTY_MODIFIER;

View File

@ -8,6 +8,7 @@ use PhpParser\Node;
use PhpParser\Node\Stmt\ClassConst;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@ -19,6 +20,11 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
*/
final class PublicConstantVisibilityRector extends AbstractRector implements MinPhpVersionInterface
{
public function __construct(
private VisibilityManipulator $visibilityManipulator,
) {
}
public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition(

View File

@ -8,6 +8,7 @@ use PhpParser\Node;
use PhpParser\Node\Stmt\ClassMethod;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@ -17,6 +18,11 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
*/
final class FinalPrivateToPrivateVisibilityRector extends AbstractRector implements MinPhpVersionInterface
{
public function __construct(
private VisibilityManipulator $visibilityManipulator,
) {
}
public function provideMinPhpVersion(): int
{
return PhpVersionFeature::NO_FINAL_PRIVATE;

View File

@ -9,6 +9,7 @@ use PhpParser\Node\Stmt\ClassMethod;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\MethodName;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@ -18,6 +19,11 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
*/
final class SetStateToStaticRector extends AbstractRector implements MinPhpVersionInterface
{
public function __construct(
private VisibilityManipulator $visibilityManipulator
) {
}
public function provideMinPhpVersion(): int
{
return PhpVersionFeature::STATIC_VISIBILITY_SET_STATE;

View File

@ -8,6 +8,7 @@ use PhpParser\Node;
use PhpParser\Node\Stmt\ClassConst;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@ -19,6 +20,11 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
*/
final class FinalizePublicClassConstantRector extends AbstractRector implements MinPhpVersionInterface
{
public function __construct(
private VisibilityManipulator $visibilityManipulator
) {
}
public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition('Add final to constants that', [

View File

@ -10,6 +10,7 @@ use PhpParser\Node\Stmt\Property;
use Rector\Core\NodeManipulator\PropertyManipulator;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\PhpVersionFeature;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@ -22,7 +23,8 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
final class ReadOnlyPropertyRector extends AbstractRector implements MinPhpVersionInterface
{
public function __construct(
private PropertyManipulator $propertyManipulator
private PropertyManipulator $propertyManipulator,
private VisibilityManipulator $visibilityManipulator,
) {
}

View File

@ -11,6 +11,7 @@ use Rector\Core\ValueObject\MethodName;
use Rector\PhpSpecToPHPUnit\Naming\PhpSpecRenaming;
use Rector\PhpSpecToPHPUnit\PHPUnitTypeDeclarationDecorator;
use Rector\PhpSpecToPHPUnit\Rector\AbstractPhpSpecToPHPUnitRector;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
/**
* @see \Rector\Tests\PhpSpecToPHPUnit\Rector\Variable\PhpSpecToPHPUnitRector\PhpSpecToPHPUnitRectorTest
@ -19,7 +20,8 @@ final class PhpSpecMethodToPHPUnitMethodRector extends AbstractPhpSpecToPHPUnitR
{
public function __construct(
private PHPUnitTypeDeclarationDecorator $phpUnitTypeDeclarationDecorator,
private PhpSpecRenaming $phpSpecRenaming
private PhpSpecRenaming $phpSpecRenaming,
private VisibilityManipulator $visibilityManipulator,
) {
}

View File

@ -10,6 +10,7 @@ use PHPStan\Analyser\Scope;
use PHPStan\Reflection\ClassReflection;
use Rector\Core\Rector\AbstractRector;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Rector\Privatization\VisibilityGuard\ClassMethodVisibilityGuard;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@ -20,7 +21,8 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
final class PrivatizeFinalClassMethodRector extends AbstractRector
{
public function __construct(
private ClassMethodVisibilityGuard $classMethodVisibilityGuard
private ClassMethodVisibilityGuard $classMethodVisibilityGuard,
private VisibilityManipulator $visibilityManipulator,
) {
}

View File

@ -13,6 +13,7 @@ use Rector\Core\NodeAnalyzer\ClassAnalyzer;
use Rector\Core\Rector\AbstractRector;
use Rector\FamilyTree\Reflection\FamilyRelationsAnalyzer;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@ -39,7 +40,8 @@ final class FinalizeClassesWithoutChildrenRector extends AbstractRector
public function __construct(
private ClassAnalyzer $classAnalyzer,
private FamilyRelationsAnalyzer $familyRelationsAnalyzer
private FamilyRelationsAnalyzer $familyRelationsAnalyzer,
private VisibilityManipulator $visibilityManipulator,
) {
}

View File

@ -11,6 +11,7 @@ use PHPStan\Analyser\Scope;
use PHPStan\Reflection\ClassReflection;
use Rector\Core\Rector\AbstractRector;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@ -19,6 +20,11 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
*/
final class PrivatizeFinalClassPropertyRector extends AbstractRector
{
public function __construct(
private VisibilityManipulator $visibilityManipulator,
) {
}
public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition('Change property to private if possible', [

View File

@ -14,6 +14,7 @@ use PHPStan\Reflection\ClassReflection;
use PHPStan\Type\ObjectType;
use Rector\Core\Rector\AbstractRector;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Rector\Privatization\VisibilityGuard\ClassMethodVisibilityGuard;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@ -24,7 +25,8 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
final class LocallyCalledStaticMethodToNonStaticRector extends AbstractRector
{
public function __construct(
private ClassMethodVisibilityGuard $classMethodVisibilityGuard
private ClassMethodVisibilityGuard $classMethodVisibilityGuard,
private VisibilityManipulator $visibilityManipulator,
) {
}

View File

@ -13,6 +13,7 @@ use PHPStan\Type\ObjectType;
use Rector\Core\Configuration\Option;
use Rector\Core\Rector\AbstractRector;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Symplify\PackageBuilder\Parameter\ParameterProvider;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@ -27,8 +28,10 @@ final class DesiredPropertyClassMethodTypeToDynamicRector extends AbstractRector
*/
private array $staticObjectTypes = [];
public function __construct(ParameterProvider $parameterProvider)
{
public function __construct(
ParameterProvider $parameterProvider,
private VisibilityManipulator $visibilityManipulator,
) {
$typesToRemoveStaticFrom = $parameterProvider->provideArrayParameter(Option::TYPES_TO_REMOVE_STATIC_FROM);
foreach ($typesToRemoveStaticFrom as $typeToRemoveStaticFrom) {
$this->staticObjectTypes[] = new ObjectType($typeToRemoveStaticFrom);

View File

@ -7,6 +7,7 @@ namespace Rector\Restoration\Rector\Class_;
use PhpParser\Node;
use PhpParser\Node\Stmt\Class_;
use Rector\Core\Rector\AbstractRector;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@ -15,6 +16,11 @@ use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
*/
final class RemoveFinalFromEntityRector extends AbstractRector
{
public function __construct(
private VisibilityManipulator $visibilityManipulator,
) {
}
public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition('Remove final from Doctrine entities', [

View File

@ -10,6 +10,7 @@ use PhpParser\Node\Stmt\Class_;
use Rector\Core\NodeAnalyzer\ClassAnalyzer;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\MethodName;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Rector\Transform\NodeAnalyzer\SingletonClassMethodAnalyzer;
use Rector\Transform\ValueObject\PropertyAndClassMethodName;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
@ -25,7 +26,8 @@ final class ChangeSingletonToServiceRector extends AbstractRector
{
public function __construct(
private SingletonClassMethodAnalyzer $singletonClassMethodAnalyzer,
private ClassAnalyzer $classAnalyzer
private ClassAnalyzer $classAnalyzer,
private VisibilityManipulator $visibilityManipulator,
) {
}

View File

@ -9,6 +9,7 @@ use PhpParser\Node\Stmt\ClassConst;
use Rector\Core\Contract\Rector\ConfigurableRectorInterface;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\Visibility;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Rector\Visibility\ValueObject\ChangeConstantVisibility;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@ -29,6 +30,11 @@ final class ChangeConstantVisibilityRector extends AbstractRector implements Con
*/
private array $classConstantVisibilityChanges = [];
public function __construct(
private VisibilityManipulator $visibilityManipulator,
) {
}
public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition(

View File

@ -12,6 +12,7 @@ use Rector\Core\Rector\AbstractRector;
use Rector\Core\ValueObject\Visibility;
use Rector\NodeCollector\ScopeResolver\ParentClassScopeResolver;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\Privatization\NodeManipulator\VisibilityManipulator;
use Rector\Visibility\ValueObject\ChangeMethodVisibility;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
@ -33,7 +34,8 @@ final class ChangeMethodVisibilityRector extends AbstractRector implements Confi
private array $methodVisibilities = [];
public function __construct(
private ParentClassScopeResolver $parentClassScopeResolver
private ParentClassScopeResolver $parentClassScopeResolver,
private VisibilityManipulator $visibilityManipulator,
) {
}

View File

@ -88,8 +88,6 @@ abstract class AbstractRector extends NodeVisitorAbstract implements PhpRectorIn
protected NodeFactory $nodeFactory;
protected VisibilityManipulator $visibilityManipulator;
protected ValueResolver $valueResolver;
protected BetterNodeFinder $betterNodeFinder;
@ -172,7 +170,6 @@ abstract class AbstractRector extends NodeVisitorAbstract implements PhpRectorIn
$this->nodeNameResolver = $nodeNameResolver;
$this->nodeTypeResolver = $nodeTypeResolver;
$this->simpleCallableNodeTraverser = $simpleCallableNodeTraverser;
$this->visibilityManipulator = $visibilityManipulator;
$this->nodeFactory = $nodeFactory;
$this->phpDocInfoFactory = $phpDocInfoFactory;
$this->symfonyStyle = $symfonyStyle;