Skip to content

Commit 643d4df

Browse files
committed
Feature: add support for ClassLocator from doctrine/persistence 4.1
These changes integrate doctrine/persistence#433 `ClassLocator` allows clients to pass any iterable of classes they might want.
1 parent 79a8e7e commit 643d4df

File tree

2 files changed

+19
-9
lines changed

2 files changed

+19
-9
lines changed

lib/Doctrine/ODM/PHPCR/Mapping/Driver/AttributeDriver.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
use Doctrine\ODM\PHPCR\Mapping\ClassMetadata;
2828
use Doctrine\ODM\PHPCR\Mapping\MappingException;
2929
use Doctrine\Persistence\Mapping\ClassMetadata as PersistenceClassMetadata;
30+
use Doctrine\Persistence\Mapping\Driver\ClassLocator;
3031
use Doctrine\Persistence\Mapping\Driver\ColocatedMappingDriver;
3132
use Doctrine\Persistence\Mapping\Driver\MappingDriver;
3233

@@ -55,12 +56,17 @@ class AttributeDriver implements MappingDriver
5556
private AttributeReader $reader;
5657

5758
/**
58-
* @param array<string> $paths
59+
* @param array<string>|ClassLocator $paths directory paths or class locator
5960
*/
60-
public function __construct(array $paths)
61+
public function __construct(array|ClassLocator $paths)
6162
{
6263
$this->reader = new AttributeReader();
63-
$this->addPaths($paths);
64+
65+
if ($paths instanceof ClassLocator) {
66+
$this->classLocator = $paths;
67+
} else {
68+
$this->addPaths($paths);
69+
}
6470
}
6571

6672
public function isTransient($className): bool

tests/Doctrine/Tests/ODM/PHPCR/Mapping/AttributeDriverTest.php

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,28 @@
33
namespace Doctrine\Tests\ODM\PHPCR\Mapping;
44

55
use Doctrine\ODM\PHPCR\Mapping\Driver\AttributeDriver;
6+
use Doctrine\Persistence\Mapping\Driver\FileClassLocator;
67
use Doctrine\Persistence\Mapping\Driver\MappingDriver;
78

89
/**
910
* @group mapping
1011
*/
1112
class AttributeDriverTest extends AbstractMappingDriverTest
1213
{
13-
protected function loadDriver(): AttributeDriver
14+
/** @param list<string> $paths */
15+
protected function loadDriver(array $paths = []): AttributeDriver
1416
{
15-
return new AttributeDriver([]);
17+
// Available in Doctrine Persistence 4.1+
18+
if (class_exists(FileClassLocator::class)) {
19+
$paths = FileClassLocator::createFromDirectories($paths);
20+
}
21+
22+
return new AttributeDriver($paths);
1623
}
1724

1825
protected function loadDriverForTestMappingDocuments(): MappingDriver
1926
{
20-
$attributeDriver = $this->loadDriver();
21-
$attributeDriver->addPaths([__DIR__.'/Model']);
22-
23-
return $attributeDriver;
27+
return $this->loadDriver([__DIR__.'/Model']);
2428
}
2529

2630
/**

0 commit comments

Comments
 (0)