Skip to content

Commit

Permalink
[DX] Explicitly inject visibility manipulator service instead of pare…
Browse files Browse the repository at this point in the history
…nt constructor (#1298)
  • Loading branch information
TomasVotruba committed Nov 24, 2021
1 parent 3d49ef2 commit 0e96615
Show file tree
Hide file tree
Showing 23 changed files with 107 additions and 13 deletions.
Expand Up @@ -16,6 +16,7 @@
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;
Expand All @@ -27,6 +28,11 @@
*/
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', [
Expand Down
Expand Up @@ -7,6 +7,7 @@
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;

Expand All @@ -17,6 +18,11 @@
*/
final class DowngradeClassConstantVisibilityRector extends AbstractRector
{
public function __construct(
private VisibilityManipulator $visibilityManipulator,
) {
}

public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition(
Expand Down
Expand Up @@ -9,6 +9,7 @@
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;

Expand All @@ -17,6 +18,11 @@
*/
final class DowngradeAbstractPrivateMethodInTraitRector extends AbstractRector
{
public function __construct(
private VisibilityManipulator $visibilityManipulator,
) {
}

public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition(
Expand Down
Expand Up @@ -7,6 +7,7 @@
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;

Expand All @@ -17,6 +18,11 @@
*/
final class DowngradeFinalizePublicClassConstantRector extends AbstractRector
{
public function __construct(
private VisibilityManipulator $visibilityManipulator,
) {
}

public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition('Remove final from class constants', [
Expand Down
Expand Up @@ -10,6 +10,7 @@
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;

Expand All @@ -25,6 +26,11 @@ final class DowngradeReadonlyPropertyRector extends AbstractRector
*/
private const TAGNAME = 'readonly';

public function __construct(
private VisibilityManipulator $visibilityManipulator,
) {
}

/**
* @return array<class-string<Node>>
*/
Expand Down
Expand Up @@ -18,6 +18,7 @@
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;
Expand All @@ -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,
) {
}

Expand Down
6 changes: 6 additions & 0 deletions rules/Php52/Rector/Property/VarToPublicPropertyRector.php
Expand Up @@ -8,6 +8,7 @@
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;
Expand All @@ -17,6 +18,11 @@
*/
final class VarToPublicPropertyRector extends AbstractRector implements MinPhpVersionInterface
{
public function __construct(
private VisibilityManipulator $visibilityManipulator,
) {
}

public function provideMinPhpVersion(): int
{
return PhpVersionFeature::PROPERTY_MODIFIER;
Expand Down
Expand Up @@ -8,6 +8,7 @@
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;
Expand All @@ -19,6 +20,11 @@
*/
final class PublicConstantVisibilityRector extends AbstractRector implements MinPhpVersionInterface
{
public function __construct(
private VisibilityManipulator $visibilityManipulator,
) {
}

public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition(
Expand Down
Expand Up @@ -8,6 +8,7 @@
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;
Expand All @@ -17,6 +18,11 @@
*/
final class FinalPrivateToPrivateVisibilityRector extends AbstractRector implements MinPhpVersionInterface
{
public function __construct(
private VisibilityManipulator $visibilityManipulator,
) {
}

public function provideMinPhpVersion(): int
{
return PhpVersionFeature::NO_FINAL_PRIVATE;
Expand Down
6 changes: 6 additions & 0 deletions rules/Php80/Rector/ClassMethod/SetStateToStaticRector.php
Expand Up @@ -9,6 +9,7 @@
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;
Expand All @@ -18,6 +19,11 @@
*/
final class SetStateToStaticRector extends AbstractRector implements MinPhpVersionInterface
{
public function __construct(
private VisibilityManipulator $visibilityManipulator
) {
}

public function provideMinPhpVersion(): int
{
return PhpVersionFeature::STATIC_VISIBILITY_SET_STATE;
Expand Down
Expand Up @@ -8,6 +8,7 @@
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;
Expand All @@ -19,6 +20,11 @@
*/
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', [
Expand Down
4 changes: 3 additions & 1 deletion rules/Php81/Rector/Property/ReadOnlyPropertyRector.php
Expand Up @@ -10,6 +10,7 @@
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;
Expand All @@ -22,7 +23,8 @@
final class ReadOnlyPropertyRector extends AbstractRector implements MinPhpVersionInterface
{
public function __construct(
private PropertyManipulator $propertyManipulator
private PropertyManipulator $propertyManipulator,
private VisibilityManipulator $visibilityManipulator,
) {
}

Expand Down
Expand Up @@ -11,6 +11,7 @@
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
Expand All @@ -19,7 +20,8 @@ final class PhpSpecMethodToPHPUnitMethodRector extends AbstractPhpSpecToPHPUnitR
{
public function __construct(
private PHPUnitTypeDeclarationDecorator $phpUnitTypeDeclarationDecorator,
private PhpSpecRenaming $phpSpecRenaming
private PhpSpecRenaming $phpSpecRenaming,
private VisibilityManipulator $visibilityManipulator,
) {
}

Expand Down
Expand Up @@ -10,6 +10,7 @@
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;
Expand All @@ -20,7 +21,8 @@
final class PrivatizeFinalClassMethodRector extends AbstractRector
{
public function __construct(
private ClassMethodVisibilityGuard $classMethodVisibilityGuard
private ClassMethodVisibilityGuard $classMethodVisibilityGuard,
private VisibilityManipulator $visibilityManipulator,
) {
}

Expand Down
Expand Up @@ -13,6 +13,7 @@
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;

Expand All @@ -39,7 +40,8 @@ final class FinalizeClassesWithoutChildrenRector extends AbstractRector

public function __construct(
private ClassAnalyzer $classAnalyzer,
private FamilyRelationsAnalyzer $familyRelationsAnalyzer
private FamilyRelationsAnalyzer $familyRelationsAnalyzer,
private VisibilityManipulator $visibilityManipulator,
) {
}

Expand Down
Expand Up @@ -11,6 +11,7 @@
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;

Expand All @@ -19,6 +20,11 @@
*/
final class PrivatizeFinalClassPropertyRector extends AbstractRector
{
public function __construct(
private VisibilityManipulator $visibilityManipulator,
) {
}

public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition('Change property to private if possible', [
Expand Down
Expand Up @@ -14,6 +14,7 @@
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;
Expand All @@ -24,7 +25,8 @@
final class LocallyCalledStaticMethodToNonStaticRector extends AbstractRector
{
public function __construct(
private ClassMethodVisibilityGuard $classMethodVisibilityGuard
private ClassMethodVisibilityGuard $classMethodVisibilityGuard,
private VisibilityManipulator $visibilityManipulator,
) {
}

Expand Down
Expand Up @@ -13,6 +13,7 @@
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;
Expand All @@ -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);
Expand Down
Expand Up @@ -7,6 +7,7 @@
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;

Expand All @@ -15,6 +16,11 @@
*/
final class RemoveFinalFromEntityRector extends AbstractRector
{
public function __construct(
private VisibilityManipulator $visibilityManipulator,
) {
}

public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition('Remove final from Doctrine entities', [
Expand Down
Expand Up @@ -10,6 +10,7 @@
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;
Expand All @@ -25,7 +26,8 @@ final class ChangeSingletonToServiceRector extends AbstractRector
{
public function __construct(
private SingletonClassMethodAnalyzer $singletonClassMethodAnalyzer,
private ClassAnalyzer $classAnalyzer
private ClassAnalyzer $classAnalyzer,
private VisibilityManipulator $visibilityManipulator,
) {
}

Expand Down

0 comments on commit 0e96615

Please sign in to comment.