Skip to content

Commit 30dfe89

Browse files
committed
Extension: introduce ManagerProvider, replace entityManagerHelper
1 parent a0a5ffe commit 30dfe89

File tree

3 files changed

+37
-24
lines changed

3 files changed

+37
-24
lines changed

src/DI/OrmConsoleExtension.php

-21
Original file line numberDiff line numberDiff line change
@@ -82,25 +82,4 @@ public function loadConfiguration(): void
8282
->setAutowired(false);
8383
}
8484

85-
/**
86-
* Decorate services
87-
*/
88-
public function beforeCompile(): void
89-
{
90-
// Skip if it's not CLI mode
91-
if (!$this->cliMode) {
92-
return;
93-
}
94-
95-
$builder = $this->getContainerBuilder();
96-
97-
// Lookup for Symfony Console Application
98-
/** @var ServiceDefinition $applicationDef */
99-
$applicationDef = $builder->getDefinitionByType(Application::class);
100-
101-
// Register helpers
102-
$entityManagerHelper = $this->prefix('@entityManagerHelper');
103-
$applicationDef->addSetup(new Statement('$service->getHelperSet()->set(?,?)', [$entityManagerHelper, 'em']));
104-
}
105-
10685
}

src/DI/OrmExtension.php

+9-3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use Nettrine\ORM\EntityManagerDecorator;
1717
use Nettrine\ORM\Exception\Logical\InvalidArgumentException;
1818
use Nettrine\ORM\Exception\Logical\InvalidStateException;
19+
use Nettrine\ORM\ManagerProvider;
1920
use Nettrine\ORM\ManagerRegistry;
2021
use Nettrine\ORM\Mapping\ContainerEntityListenerResolver;
2122
use stdClass;
@@ -181,6 +182,7 @@ public function loadEntityManagerConfiguration(): void
181182
$decorator = $builder->addDefinition($this->prefix('entityManagerDecorator'))
182183
->setFactory($entityManagerDecoratorClass, [$original]);
183184

185+
// Configuration filters
184186
if ($config->configuration->filters !== []) {
185187
foreach ($config->configuration->filters as $filterName => $filter) {
186188
if ($filter->enabled) {
@@ -189,13 +191,17 @@ public function loadEntityManagerConfiguration(): void
189191
}
190192
}
191193

192-
// ManagerRegistry
194+
// Manager Registry
193195
$builder->addDefinition($this->prefix('managerRegistry'))
194-
->setType(ManagerRegistry::class)
195-
->setArguments([
196+
->setType(\Doctrine\Persistence\ManagerRegistry::class)
197+
->setFactory(ManagerRegistry::class, [
196198
$builder->getDefinitionByType(Connection::class),
197199
$this->prefix('@entityManagerDecorator'),
198200
]);
201+
202+
// Manager Provider
203+
$builder->addDefinition($this->prefix('managerProvider'))
204+
->setFactory(ManagerProvider::class, [$this->prefix('@managerRegistry')]);
199205
}
200206

201207
public function loadMappingConfiguration(): void

src/ManagerProvider.php

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace Nettrine\ORM;
4+
5+
use Doctrine\ORM\EntityManagerInterface;
6+
use Doctrine\ORM\Tools\Console\EntityManagerProvider;
7+
use Doctrine\Persistence\ManagerRegistry as DoctrineManagerRegistry;
8+
9+
class ManagerProvider implements EntityManagerProvider
10+
{
11+
12+
public function __construct(
13+
protected DoctrineManagerRegistry $registry
14+
)
15+
{
16+
}
17+
18+
public function getDefaultManager(): EntityManagerInterface
19+
{
20+
return $this->registry->getManager($this->registry->getDefaultManagerName());
21+
}
22+
23+
public function getManager(string $name): EntityManagerInterface
24+
{
25+
return $this->registry->getManager($name);
26+
}
27+
28+
}

0 commit comments

Comments
 (0)