Skip to content

Commit 0903068

Browse files
committed
Fix global namespace and current namespace.
1 parent 8649c7f commit 0903068

File tree

2 files changed

+44
-10
lines changed

2 files changed

+44
-10
lines changed

src/Importing.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,9 @@ public function replacePairs(): array
179179
*/
180180
public function simplyFullyQualifiedName(string $fullyQualifiedName): string
181181
{
182-
return $this->replace[self::fullyQualify($fullyQualifiedName)];
182+
$fullyQualifiedName = self::fullyQualify($fullyQualifiedName);
183+
184+
return $this->replace[$fullyQualifiedName] ?? $fullyQualifiedName;
183185
}
184186

185187
//--------------------------------------------------------------------------------------------------------------------
@@ -202,7 +204,7 @@ private function prepare0(): array
202204
'namespace' => $namespace,
203205
'name' => $name,
204206
'alias' => null,
205-
'import' => ($namespace!==$this->namespace)];
207+
'import' => ($namespace!==$this->namespace && $namespace!=='')];
206208
}
207209

208210
foreach ($rawImports as &$rawImport)
@@ -273,7 +275,10 @@ private function prepare2(array $rawImports): void
273275
$this->replace = [];
274276
foreach ($rawImports as $rawImport)
275277
{
276-
$this->replace[$rawImport['fully_qualified_name']] = $rawImport['alias'] ?? $rawImport['name'];
278+
if ($rawImport['import'])
279+
{
280+
$this->replace[$rawImport['fully_qualified_name']] = $rawImport['alias'] ?? $rawImport['name'];
281+
}
277282
}
278283
}
279284

test/ImportingTest.php

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,12 @@ public function testCollision3(): void
101101

102102
self::assertSame($expected, $importing->imports());
103103

104-
$expected = ['\\'.__NAMESPACE__.'\\ClassTwo' => 'ClassTwoAlias5',
105-
'\\Foo\\Bar\\ClassTwoAlias1' => 'ClassTwoAlias1',
106-
'\\Foo\\Bar\\ClassTwoAlias2' => 'ClassTwoAlias2',
107-
'\\Foo\\Bar\\ClassThree' => 'ClassThree',
108-
'\\Bar\\Foo\\ClassTwo' => 'ClassTwoAlias3',
109-
'\\Foo\\Bar\\ClassOne' => 'ClassOne',
110-
'\\Foo\\Bar\\ClassTwo' => 'ClassTwoAlias4'];
104+
$expected = ['\\Foo\\Bar\\ClassTwoAlias1' => 'ClassTwoAlias1',
105+
'\\Foo\\Bar\\ClassTwoAlias2' => 'ClassTwoAlias2',
106+
'\\Foo\\Bar\\ClassThree' => 'ClassThree',
107+
'\\Bar\\Foo\\ClassTwo' => 'ClassTwoAlias3',
108+
'\\Foo\\Bar\\ClassOne' => 'ClassOne',
109+
'\\Foo\\Bar\\ClassTwo' => 'ClassTwoAlias4'];
111110

112111
self::assertSame($expected, $importing->replacePairs());
113112
}
@@ -155,6 +154,36 @@ public function testSimpleCase(): void
155154
self::assertSame('ClassThree', $importing->simplyFullyQualifiedName('\\Foo\\Bar\\ClassThree'));
156155
}
157156

157+
//--------------------------------------------------------------------------------------------------------------------
158+
/**
159+
* Simple test with 3 distinct classes and a global name.
160+
*/
161+
public function testSimpleCaseWIthGlobalName(): void
162+
{
163+
$importing = new Importing(__NAMESPACE__);
164+
$importing->addClass('\\Foo\\Bar\\ClassOne');
165+
$importing->addClass('Foo\\Bar\\ClassTwo');
166+
$importing->addClass('\\Foo\\Bar\\ClassThree');
167+
$importing->addClass('\\Throwable');
168+
169+
$importing->prepare();
170+
171+
$expected = ['use Foo\\Bar\\ClassOne;',
172+
'use Foo\\Bar\\ClassThree;',
173+
'use Foo\\Bar\\ClassTwo;'];
174+
175+
self::assertSame($expected, $importing->imports());
176+
177+
$expected = ['\\Foo\\Bar\\ClassThree' => 'ClassThree',
178+
'\\Foo\\Bar\\ClassOne' => 'ClassOne',
179+
'\\Foo\\Bar\\ClassTwo' => 'ClassTwo'];
180+
181+
self::assertSame($expected, $importing->replacePairs());
182+
183+
self::assertSame('ClassThree', $importing->simplyFullyQualifiedName('Foo\\Bar\\ClassThree'));
184+
self::assertSame('ClassThree', $importing->simplyFullyQualifiedName('\\Foo\\Bar\\ClassThree'));
185+
}
186+
158187
//--------------------------------------------------------------------------------------------------------------------
159188
}
160189

0 commit comments

Comments
 (0)