Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 4170346

Browse filesBrowse files
bug #36581 [DI] fix not preloading excluded service factories (nicolas-grekas)
This PR was merged into the 5.1-dev branch. Discussion ---------- [DI] fix not preloading excluded service factories | Q | A | ------------- | --- | Branch? | master | Bug fix? | yes | New feature? | no | Deprecations? | no | Tickets | - | License | MIT | Doc PR | - Commits ------- 2a20c6e [DI] fix not preloading excluded service factories
2 parents 6b48511 + 2a20c6e commit 4170346
Copy full SHA for 4170346

File tree

Expand file treeCollapse file tree

6 files changed

+18
-14
lines changed
Filter options
Expand file treeCollapse file tree

6 files changed

+18
-14
lines changed

‎src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php
+2-2Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,9 @@ protected function execute(InputInterface $input, OutputInterface $output): int
118118
$warmer = $kernel->getContainer()->get('cache_warmer');
119119
// non optional warmers already ran during container compilation
120120
$warmer->enableOnlyOptionalWarmers();
121-
$preload = (array) $warmer->warmUp($warmupDir);
121+
$preload = (array) $warmer->warmUp($realCacheDir);
122122

123-
if (file_exists($preloadFile = $warmupDir.'/'.$kernel->getContainer()->getParameter('kernel.container_class').'.preload.php')) {
123+
if (file_exists($preloadFile = $realCacheDir.'/'.$kernel->getContainer()->getParameter('kernel.container_class').'.preload.php')) {
124124
Preloader::append($preloadFile, $preload);
125125
}
126126
}

‎src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php
+16-6Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ class %s extends {$options['class']}
270270
271271
EOF;
272272
$files = [];
273-
273+
$preloadedFiles = [];
274274
$ids = $this->container->getRemovedIds();
275275
foreach ($this->container->getDefinitions() as $id => $definition) {
276276
if (!$definition->isPublic()) {
@@ -287,11 +287,16 @@ class %s extends {$options['class']}
287287
}
288288

289289
if (!$this->inlineFactories) {
290-
foreach ($this->generateServiceFiles($services) as $file => $c) {
290+
foreach ($this->generateServiceFiles($services) as $file => [$c, $preload]) {
291291
$files[$file] = sprintf($fileTemplate, substr($file, 0, -4), $c);
292+
293+
if ($preload) {
294+
$preloadedFiles[$file] = $file;
295+
}
292296
}
293297
foreach ($proxyClasses as $file => $c) {
294298
$files[$file] = "<?php\n".$c;
299+
$preloadedFiles[$file] = $file;
295300
}
296301
}
297302

@@ -304,11 +309,16 @@ class %s extends {$options['class']}
304309
}
305310

306311
$files[$options['class'].'.php'] = $code;
312+
$preloadedFiles[$options['class'].'.php'] = $options['class'].'.php';
307313
$hash = ucfirst(strtr(ContainerBuilder::hash($files), '._', 'xx'));
308314
$code = [];
309315

310316
foreach ($files as $file => $c) {
311317
$code["Container{$hash}/{$file}"] = substr_replace($c, "<?php\n\nnamespace Container{$hash};\n", 0, 6);
318+
319+
if (isset($preloadedFiles[$file])) {
320+
$preloadedFiles[$file] = "Container{$hash}/{$file}";
321+
}
312322
}
313323
$namespaceLine = $this->namespace ? "\nnamespace {$this->namespace};\n" : '';
314324
$time = $options['build_time'];
@@ -318,8 +328,8 @@ class %s extends {$options['class']}
318328
if ($this->preload && null !== $autoloadFile = $this->getAutoloadFile()) {
319329
$autoloadFile = substr($this->export($autoloadFile), 2, -1);
320330

321-
$factoryFiles = array_reverse(array_keys($code));
322-
$factoryFiles = implode("';\nrequire __DIR__.'/", $factoryFiles);
331+
$preloadedFiles = array_reverse($preloadedFiles);
332+
$preloadedFiles = implode("';\nrequire __DIR__.'/", $preloadedFiles);
323333

324334
$code[$options['class'].'.preload.php'] = <<<EOF
325335
<?php
@@ -330,7 +340,7 @@ class %s extends {$options['class']}
330340
use Symfony\Component\DependencyInjection\Dumper\Preloader;
331341
332342
require $autoloadFile;
333-
require __DIR__.'/$factoryFiles';
343+
require __DIR__.'/$preloadedFiles';
334344
335345
\$classes = [];
336346
@@ -1036,7 +1046,7 @@ private function generateServiceFiles(array $services): iterable
10361046
ksort($definitions);
10371047
foreach ($definitions as $id => $definition) {
10381048
if ((list($file, $code) = $services[$id]) && null !== $file && ($definition->isPublic() || !$this->isTrivialInstance($definition) || isset($this->locatedIds[$id]))) {
1039-
yield $file => $code;
1049+
yield $file => [$code, !$definition->hasTag($this->preloadTags[1]) && !$definition->isDeprecated() && !$definition->hasErrors()];
10401050
}
10411051
}
10421052
}

‎src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services9_as_files.txt

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services9_as_files.txt
-3Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -907,10 +907,8 @@ require __DIR__.'/Container%s/getFooWithInlineService.php';
907907
require __DIR__.'/Container%s/getFooBarService.php';
908908
require __DIR__.'/Container%s/getFoo_BazService.php';
909909
require __DIR__.'/Container%s/getFooService.php';
910-
require __DIR__.'/Container%s/getFactorySimpleService.php';
911910
require __DIR__.'/Container%s/getFactoryServiceSimpleService.php';
912911
require __DIR__.'/Container%s/getFactoryServiceService.php';
913-
require __DIR__.'/Container%s/getDeprecatedServiceService.php';
914912
require __DIR__.'/Container%s/getDecoratorServiceWithNameService.php';
915913
require __DIR__.'/Container%s/getDecoratorServiceService.php';
916914
require __DIR__.'/Container%s/getConfiguredServiceSimpleService.php';
@@ -919,7 +917,6 @@ require __DIR__.'/Container%s/getBazService.php';
919917
require __DIR__.'/Container%s/getBar23Service.php';
920918
require __DIR__.'/Container%s/getBAR22Service.php';
921919
require __DIR__.'/Container%s/getBAR2Service.php';
922-
require __DIR__.'/Container%s/removed-ids.php';
923920

924921
$classes = [];
925922
$classes[] = 'Bar\FooClass';

‎src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services9_inlined_factories.txt

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services9_inlined_factories.txt
-1Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -548,7 +548,6 @@ use Symfony\Component\DependencyInjection\Dumper\Preloader;
548548

549549
require dirname(__DIR__, %d).'%svendor/autoload.php';
550550
require __DIR__.'/Container%s/ProjectServiceContainer.php';
551-
require __DIR__.'/Container%s/removed-ids.php';
552551

553552
$classes = [];
554553
$classes[] = 'Bar\FooClass';

‎src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services9_lazy_inlined_factories.txt

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services9_lazy_inlined_factories.txt
-1Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,6 @@ use Symfony\Component\DependencyInjection\Dumper\Preloader;
171171

172172
require dirname(__DIR__, %d).'%svendor/autoload.php';
173173
require __DIR__.'/Container%s/ProjectServiceContainer.php';
174-
require __DIR__.'/Container%s/removed-ids.php';
175174

176175
$classes = [];
177176
$classes[] = 'Bar\FooClass';

‎src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_non_shared_lazy_as_files.txt

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services_non_shared_lazy_as_files.txt
-1Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,6 @@ use Symfony\Component\DependencyInjection\Dumper\Preloader;
113113
require dirname(__DIR__, %d).'%svendor/autoload.php';
114114
require __DIR__.'/Container%s/ProjectServiceContainer.php';
115115
require __DIR__.'/Container%s/getNonSharedFooService.php';
116-
require __DIR__.'/Container%s/removed-ids.php';
117116

118117
$classes = [];
119118
$classes[] = 'Bar\FooLazyClass';

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.