Skip to content

Commit b8856c0

Browse files
committed
Code changes to sync with upstream updates
1 parent 4afbc0e commit b8856c0

File tree

5 files changed

+20
-55
lines changed

5 files changed

+20
-55
lines changed

src/Doctrine/EntityRegenerator.php

Lines changed: 14 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -146,20 +146,11 @@ public function regenerateEntities(string $classOrNamespace)
146146

147147
private function generateClass(ClassMetadata $metadata): string
148148
{
149-
$path = $this->getPathForFutureClass($metadata->name);
150-
151-
if (null === $path) {
152-
throw new RuntimeCommandException(sprintf('Cannot determine where to generate the class "%s". This could be a bug in the library - please open an issue with your setup details.', $metadata->name));
153-
}
154-
155-
$this->generator->generate([
156-
'class_namespace' => $metadata->namespace,
157-
'class_name' => Str::getShortClassName($metadata->name),
158-
], [
159-
__DIR__.'/../Resources/skeleton/Class.tpl.php' => $path,
160-
]);
161-
162-
return $path;
149+
return $this->generator->generateClass(
150+
$metadata->name,
151+
'Class.tpl.php',
152+
[]
153+
);
163154
}
164155

165156
private function createClassManipulator(string $classPath): ClassSourceManipulator
@@ -193,37 +184,15 @@ private function generateRepository(ClassMetadata $metadata)
193184

194185
// duplication in MakeEntity
195186
$entityClassName = Str::getShortClassName($metadata->name);
196-
$entityAlias = strtolower($entityClassName[0]);
197-
$repositoryClassName = Str::getShortClassName($metadata->customRepositoryClassName);
198-
$repositoryNamespace = Str::getNamespace($metadata->customRepositoryClassName);
199-
$path = $this->getPathForFutureClass($metadata->customRepositoryClassName);
200-
201-
$this->generator->generate([
202-
'repository_namespace' => $repositoryNamespace,
203-
'entity_class_name' => $entityClassName,
204-
'repository_class_name' => $repositoryClassName,
205-
'entity_alias' => $entityAlias,
206-
], [
207-
__DIR__.'/../Resources/skeleton/doctrine/Repository.tpl.php' => $path,
208-
]);
209-
}
210187

211-
private function getPathForFutureClass(string $className): ?string
212-
{
213-
$autoloadPath = $this->projectDirectory.'/vendor/autoload.php';
214-
if (!file_exists($autoloadPath)) {
215-
throw new \Exception(sprintf('Could not find the autoload file: "%s"', $autoloadPath));
216-
}
217-
218-
/** @var \Composer\Autoload\ClassLoader $loader */
219-
$loader = require $autoloadPath;
220-
$path = null;
221-
foreach ($loader->getPrefixesPsr4() as $prefix => $paths) {
222-
if (0 === strpos($className, $prefix)) {
223-
return $paths[0].'/'.str_replace('\\', '/', str_replace($prefix, '', $className)).'.php';
224-
}
225-
}
226-
227-
return null;
188+
$this->generator->generateClass(
189+
$metadata->customRepositoryClassName,
190+
'doctrine/Repository.tpl.php',
191+
[
192+
'entity_full_class_name' => $metadata->name,
193+
'entity_class_name' => $entityClassName,
194+
'entity_alias' => strtolower($entityClassName[0]),
195+
]
196+
);
228197
}
229198
}

src/Maker/MakeEntity.php

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,12 @@
3939
final class MakeEntity extends AbstractMaker
4040
{
4141
private $fileManager;
42-
private $generator;
4342
private $registry;
4443
private $projectDirectory;
4544

46-
public function __construct(FileManager $fileManager, Generator $generator, string $projectDirectory, ?ManagerRegistry $registry)
45+
public function __construct(FileManager $fileManager, string $projectDirectory, ?ManagerRegistry $registry)
4746
{
4847
$this->fileManager = $fileManager;
49-
$this->generator = $generator;
5048
$this->projectDirectory = $projectDirectory;
5149
$this->registry = $registry;
5250
}
@@ -110,7 +108,7 @@ public function generate(InputInterface $input, ConsoleStyle $io, Generator $gen
110108

111109
// the regenerate option has entirely custom behavior
112110
if ($input->getOption('regenerate')) {
113-
$this->regenerateEntities($input->getArgument('name'), $overwrite, $io);
111+
$this->regenerateEntities($input->getArgument('name'), $overwrite, $generator);
114112
}
115113

116114
$entityClassDetails = $generator->createClassNameDetails(
@@ -770,10 +768,9 @@ private function isClassInVendor(string $class): bool
770768
return $this->fileManager->isPathInVendor($path);
771769
}
772770

773-
private function regenerateEntities(string $classOrNamespace, bool $overwrite, ConsoleStyle $io)
771+
private function regenerateEntities(string $classOrNamespace, bool $overwrite, Generator $generator)
774772
{
775-
$this->generator->setIO($io);
776-
$regenerator = new EntityRegenerator($this->getRegistry(), $this->fileManager, $this->generator, $this->projectDirectory, $overwrite);
773+
$regenerator = new EntityRegenerator($this->getRegistry(), $this->fileManager, $generator, $this->projectDirectory, $overwrite);
777774
$regenerator->regenerateEntities($classOrNamespace);
778775
}
779776
}

src/Resources/config/makers.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222

2323
<service id="maker.maker.make_entity" class="Symfony\Bundle\MakerBundle\Maker\MakeEntity">
2424
<argument type="service" id="maker.file_manager" />
25-
<argument type="service" id="maker.generator" />
2625
<argument>%kernel.project_dir%</argument>
2726
<argument type="service" id="doctrine" on-invalid="null" />
2827
<tag name="maker.command" />

src/Resources/skeleton/Class.tpl.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?= "<?php\n" ?>
22

3-
namespace <?= $class_namespace; ?>;
3+
namespace <?= $namespace; ?>;
44

55
class <?= $class_name."\n" ?>
66
{

tests/Doctrine/EntityRegeneratorTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ private function doTestRegeneration(string $sourceDir, Kernel $kernel, string $n
7373
$regenerator = new EntityRegenerator(
7474
$container->get('doctrine'),
7575
$fileManager,
76-
new Generator($fileManager),
76+
new Generator($fileManager, 'App\\'),
7777
// project root: just used to fetch the autoloader
7878
// and in this case, we want to use *our* autoloader
7979
__DIR__.'/../../',

0 commit comments

Comments
 (0)