Skip to content

Commit 4a47deb

Browse files
committed
move logic to separate service
1 parent 3aa0212 commit 4a47deb

2 files changed

Lines changed: 29 additions & 9 deletions

File tree

rules/CodingStyle/ClassNameImport/ClassNameImportSkipVoter/ClassLikeNameClassNameImportSkipVoter.php

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
use PhpParser\Node;
88
use PHPStan\Analyser\Scope;
9+
use Rector\CodingStyle\ClassNameImport\LastNamespaceResolver;
10+
use Rector\CodingStyle\ClassNameImport\NamespaceBeforeClassNameResolver;
911
use Rector\CodingStyle\ClassNameImport\ShortNameResolver;
1012
use Rector\CodingStyle\Contract\ClassNameImport\ClassNameImportSkipVoterInterface;
1113
use Rector\NodeTypeResolver\Node\AttributeKey;
@@ -24,7 +26,8 @@
2426
final readonly class ClassLikeNameClassNameImportSkipVoter implements ClassNameImportSkipVoterInterface
2527
{
2628
public function __construct(
27-
private ShortNameResolver $shortNameResolver
29+
private ShortNameResolver $shortNameResolver,
30+
private NamespaceBeforeClassNameResolver $namespaceBeforeClassNameResolver
2831
) {
2932
}
3033

@@ -46,14 +49,7 @@ public function shouldSkip(File $file, FullyQualifiedObjectType $fullyQualifiedO
4649
$namespace = strtolower((string) $namespace);
4750

4851
$shortNameLowered = $fullyQualifiedObjectType->getShortNameLowered();
49-
$subClassName = $fullyQualifiedObjectType->getClassName() === $fullyQualifiedObjectType->getShortName()
50-
? ''
51-
: substr(
52-
$fullyQualifiedObjectType->getClassName(),
53-
0,
54-
-strlen($fullyQualifiedObjectType->getShortName()) - 1
55-
);
56-
52+
$subClassName = $this->namespaceBeforeClassNameResolver->resolve($fullyQualifiedObjectType);
5753
$fullyQualifiedObjectTypeNamespace = strtolower($subClassName);
5854

5955
foreach ($classLikeNames as $classLikeName) {
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Rector\CodingStyle\ClassNameImport;
6+
7+
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
8+
9+
final class NamespaceBeforeClassNameResolver
10+
{
11+
public function resolve(FullyQualifiedObjectType $fullyQualifiedObjectType): string
12+
{
13+
$className = $fullyQualifiedObjectType->getClassName();
14+
$shortName = $fullyQualifiedObjectType->getShortName();
15+
16+
return $className === $shortName
17+
? ''
18+
: substr(
19+
$className,
20+
0,
21+
-strlen($shortName) - 1
22+
);
23+
}
24+
}

0 commit comments

Comments
 (0)