Skip to content

Commit 513afa1

Browse files
authored
Merge pull request #3 from moufmouf/passing_classnamemapper
Adding the possibility to pass a ClassNameMapper instance
2 parents 36d734e + a62b0ea commit 513afa1

File tree

3 files changed

+25
-4
lines changed

3 files changed

+25
-4
lines changed

composer.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@
3131
"TheCodingMachine\\ClassExplorer\\": "src/"
3232
}
3333
},
34+
"autoload-dev": {
35+
"psr-4": {
36+
"TheCodingMachine\\ClassExplorer\\": "tests/"
37+
}
38+
},
3439
"extra": {
3540
"class": "TheCodingMachine\\ClassExplorer\\ClassExplorerPlugin",
3641
"branch-alias": {

src/Glob/GlobClassExplorer.php

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,17 @@ class GlobClassExplorer implements ClassExplorerInterface
3636
* @var int|null
3737
*/
3838
private $cacheTtl;
39+
/**
40+
* @var ClassNameMapper|null
41+
*/
42+
private $classNameMapper;
3943

40-
public function __construct(string $namespace, CacheInterface $cache, ?int $cacheTtl = null)
44+
public function __construct(string $namespace, CacheInterface $cache, ?int $cacheTtl = null, ?ClassNameMapper $classNameMapper = null)
4145
{
4246
$this->namespace = $namespace;
4347
$this->cache = $cache;
4448
$this->cacheTtl = $cacheTtl;
49+
$this->classNameMapper = $classNameMapper;
4550
}
4651

4752
/**
@@ -68,8 +73,10 @@ public function getClasses(): array
6873
private function doGetClasses(): array
6974
{
7075
$namespace = trim($this->namespace, '\\').'\\';
71-
$mapper = ClassNameMapper::createFromComposerFile();
72-
$files = $mapper->getPossibleFileNames($namespace.'XXX');
76+
if ($this->classNameMapper === null) {
77+
$this->classNameMapper = ClassNameMapper::createFromComposerFile();
78+
}
79+
$files = $this->classNameMapper->getPossibleFileNames($namespace.'XXX');
7380

7481
$dirs = \array_map('dirname', $files);
7582

@@ -88,7 +95,7 @@ private function doGetClasses(): array
8895

8996
/**
9097
* @param string $directory
91-
* @return RegexIterator
98+
* @return \Iterator
9299
*/
93100
private static function getPhpFilesForDir(string $directory): \Iterator
94101
{

tests/Glob/GlobClassExplorerTest.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace TheCodingMachine\ClassExplorer\Glob;
44

5+
use Mouf\Composer\ClassNameMapper;
56
use PHPUnit\Framework\TestCase;
67
use Symfony\Component\Cache\Simple\NullCache;
78

@@ -15,6 +16,14 @@ public function testGetClasses()
1516
$this->assertSame([GlobClassExplorer::class], $classes);
1617
}
1718

19+
public function testGetDevClasses()
20+
{
21+
$explorer = new GlobClassExplorer('\\TheCodingMachine\\ClassExplorer\\Glob\\', new NullCache(), null, ClassNameMapper::createFromComposerFile(null, null, true));
22+
$classes = $explorer->getClasses();
23+
24+
$this->assertSame([GlobClassExplorer::class, GlobClassExplorerTest::class], $classes);
25+
}
26+
1827
public function testGetNotExistingClasses()
1928
{
2029
$explorer = new GlobClassExplorer('\\TheCodingMachine\\ClassExplorer\\Glob\\Foobar\\', new NullCache());

0 commit comments

Comments
 (0)