diff --git a/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/ShortClassImportSkipVoter.php b/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/ShortClassImportSkipVoter.php new file mode 100644 index 00000000000..26f17091fbe --- /dev/null +++ b/rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/ShortClassImportSkipVoter.php @@ -0,0 +1,26 @@ +getClassName(), '\\'); + + if (substr_count($className, '\\') === 0) { + return ! SimpleParameterProvider::provideBoolParameter(Option::IMPORT_SHORT_CLASSES); + } + + return false; + } +} diff --git a/rules/CodingStyle/ClassNameImport/ClassNameImportSkipper.php b/rules/CodingStyle/ClassNameImport/ClassNameImportSkipper.php index 56bdf2ed784..6bd20054bfd 100644 --- a/rules/CodingStyle/ClassNameImport/ClassNameImportSkipper.php +++ b/rules/CodingStyle/ClassNameImport/ClassNameImportSkipper.php @@ -12,8 +12,6 @@ use PhpParser\Node\Stmt\Use_; use PhpParser\Node\UseItem; use Rector\CodingStyle\Contract\ClassNameImport\ClassNameImportSkipVoterInterface; -use Rector\Configuration\Option; -use Rector\Configuration\Parameter\SimpleParameterProvider; use Rector\Naming\Naming\UseImportsResolver; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType; @@ -50,7 +48,7 @@ public function shouldSkipNameForFullyQualifiedObjectType( public function shouldSkipName(FullyQualified $fullyQualified, array $uses): bool { if (substr_count($fullyQualified->toCodeString(), '\\') === 1) { - return $this->shouldSkipShortName($fullyQualified); + return $this->isFunctionOrConstantImport($fullyQualified); } // verify long name, as short name verify may conflict @@ -87,16 +85,6 @@ public function shouldSkipName(FullyQualified $fullyQualified, array $uses): boo return false; } - private function shouldSkipShortName(FullyQualified $fullyQualified): bool - { - if ($this->isFunctionOrConstantImport($fullyQualified)) { - return true; - } - - // Importing root namespace classes (like \DateTime) is optional - return ! SimpleParameterProvider::provideBoolParameter(Option::IMPORT_SHORT_CLASSES); - } - private function isFunctionOrConstantImport(FullyQualified $fullyQualified): bool { if ($fullyQualified->getAttribute(AttributeKey::IS_CONSTFETCH_NAME) === true) { diff --git a/src/DependencyInjection/LazyContainerFactory.php b/src/DependencyInjection/LazyContainerFactory.php index 3e78fa7f42a..be2a741911b 100644 --- a/src/DependencyInjection/LazyContainerFactory.php +++ b/src/DependencyInjection/LazyContainerFactory.php @@ -46,6 +46,7 @@ use Rector\CodingStyle\ClassNameImport\ClassNameImportSkipVoter\ClassLikeNameClassNameImportSkipVoter; use Rector\CodingStyle\ClassNameImport\ClassNameImportSkipVoter\FullyQualifiedNameClassNameImportSkipVoter; use Rector\CodingStyle\ClassNameImport\ClassNameImportSkipVoter\ReservedClassNameImportSkipVoter; +use Rector\CodingStyle\ClassNameImport\ClassNameImportSkipVoter\ShortClassImportSkipVoter; use Rector\CodingStyle\ClassNameImport\ClassNameImportSkipVoter\UsesClassNameImportSkipVoter; use Rector\CodingStyle\Contract\ClassNameImport\ClassNameImportSkipVoterInterface; use Rector\Config\RectorConfig; @@ -264,6 +265,7 @@ final class LazyContainerFactory FullyQualifiedNameClassNameImportSkipVoter::class, UsesClassNameImportSkipVoter::class, ReservedClassNameImportSkipVoter::class, + ShortClassImportSkipVoter::class, ]; /** diff --git a/src/NodeTypeResolver/PhpDocNodeVisitor/NameImportingPhpDocNodeVisitor.php b/src/NodeTypeResolver/PhpDocNodeVisitor/NameImportingPhpDocNodeVisitor.php index bd1e57ca299..e40eb031bdc 100644 --- a/src/NodeTypeResolver/PhpDocNodeVisitor/NameImportingPhpDocNodeVisitor.php +++ b/src/NodeTypeResolver/PhpDocNodeVisitor/NameImportingPhpDocNodeVisitor.php @@ -16,8 +16,6 @@ use Rector\BetterPhpDocParser\PhpDoc\SpacelessPhpDocTagNode; use Rector\BetterPhpDocParser\ValueObject\PhpDocAttributeKey; use Rector\CodingStyle\ClassNameImport\ClassNameImportSkipper; -use Rector\Configuration\Option; -use Rector\Configuration\Parameter\SimpleParameterProvider; use Rector\Exception\ShouldNotHappenException; use Rector\PhpDocParser\PhpDocParser\PhpDocNodeVisitor\AbstractPhpDocNodeVisitor; use Rector\PostRector\Collector\UseNodesToAddCollector; @@ -80,11 +78,6 @@ public function enterNode(Node $node): ?Node return null; } - // Importing root namespace classes (like \DateTime) is optional - if ($this->shouldSkipShortClassName($staticType)) { - return null; - } - $file = $this->currentFileProvider->getFile(); if (! $file instanceof File) { return null; @@ -199,16 +192,6 @@ private function shouldImport( return count($namespaceParts) > 1; } - private function shouldSkipShortClassName(FullyQualifiedObjectType $fullyQualifiedObjectType): bool - { - $importShortClasses = SimpleParameterProvider::provideBoolParameter(Option::IMPORT_SHORT_CLASSES); - if ($importShortClasses) { - return false; - } - - return substr_count($fullyQualifiedObjectType->getClassName(), '\\') === 0; - } - private function processDoctrineAnnotationTagValueNode( DoctrineAnnotationTagValueNode $doctrineAnnotationTagValueNode ): void {