Skip to content

Commit 7b77b24

Browse files
Merge branch '5.4' into 6.0
* 5.4: [VarDumper] Backport type fixes [Ldap] Backport refactorings [DependencyInjection] Optimize PHP preloading Introduced new method for getting bundles config path
2 parents 9ce22c5 + b2df9e4 commit 7b77b24

7 files changed

+14
-9
lines changed

Dumper/PhpDumper.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ class %s extends {$options['class']}
337337

338338
$code[$options['class'].'.preload.php'] .= <<<'EOF'
339339
340-
Preloader::preload($classes);
340+
$preloaded = Preloader::preload($classes);
341341

342342
EOF;
343343
}

Dumper/Preloader.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ public static function append(string $file, array $list): void
3434
$classes[] = sprintf("\$classes[] = %s;\n", var_export($item, true));
3535
}
3636

37-
file_put_contents($file, sprintf("\n\$classes = [];\n%sPreloader::preload(\$classes);\n", implode('', $classes)), \FILE_APPEND);
37+
file_put_contents($file, sprintf("\n\$classes = [];\n%s\$preloaded = Preloader::preload(\$classes, \$preloaded);\n", implode('', $classes)), \FILE_APPEND);
3838
}
3939

40-
public static function preload(array $classes): void
40+
public static function preload(array $classes, array $preloaded = []): array
4141
{
4242
set_error_handler(function ($t, $m, $f, $l) {
4343
if (error_reporting() & $t) {
@@ -50,7 +50,6 @@ public static function preload(array $classes): void
5050
});
5151

5252
$prev = [];
53-
$preloaded = [];
5453

5554
try {
5655
while ($prev !== $classes) {
@@ -65,6 +64,8 @@ public static function preload(array $classes): void
6564
} finally {
6665
restore_error_handler();
6766
}
67+
68+
return $preloaded;
6869
}
6970

7071
private static function doPreload(string $class, array &$preloaded): void
@@ -76,6 +77,10 @@ private static function doPreload(string $class, array &$preloaded): void
7677
$preloaded[$class] = true;
7778

7879
try {
80+
if (!class_exists($class) && !interface_exists($class, false) && !trait_exists($class, false)) {
81+
return;
82+
}
83+
7984
$r = new \ReflectionClass($class);
8085

8186
if ($r->isInternal()) {

Tests/Fixtures/php/services10_as_files.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ $classes = [];
138138
$classes[] = 'FooClass';
139139
$classes[] = 'Symfony\Component\DependencyInjection\ContainerInterface';
140140

141-
Preloader::preload($classes);
141+
$preloaded = Preloader::preload($classes);
142142

143143
[ProjectServiceContainer.php] => <?php
144144

Tests/Fixtures/php/services9_as_files.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -938,7 +938,7 @@ $classes[] = 'Some\Sidekick2';
938938
$classes[] = 'Request';
939939
$classes[] = 'Symfony\Component\DependencyInjection\ContainerInterface';
940940

941-
Preloader::preload($classes);
941+
$preloaded = Preloader::preload($classes);
942942

943943
[ProjectServiceContainer.php] => <?php
944944

Tests/Fixtures/php/services9_inlined_factories.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -569,7 +569,7 @@ $classes[] = 'Some\Sidekick2';
569569
$classes[] = 'Request';
570570
$classes[] = 'Symfony\Component\DependencyInjection\ContainerInterface';
571571

572-
Preloader::preload($classes);
572+
$preloaded = Preloader::preload($classes);
573573

574574
[ProjectServiceContainer.php] => <?php
575575

Tests/Fixtures/php/services9_lazy_inlined_factories.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ $classes[] = 'Bar\FooClass';
169169
$classes[] = 'Bar\FooLazyClass';
170170
$classes[] = 'Symfony\Component\DependencyInjection\ContainerInterface';
171171

172-
Preloader::preload($classes);
172+
$preloaded = Preloader::preload($classes);
173173

174174
[ProjectServiceContainer.php] => <?php
175175

Tests/Fixtures/php/services_non_shared_lazy_as_files.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ $classes = [];
138138
$classes[] = 'Bar\FooLazyClass';
139139
$classes[] = 'Symfony\Component\DependencyInjection\ContainerInterface';
140140

141-
Preloader::preload($classes);
141+
$preloaded = Preloader::preload($classes);
142142

143143
[ProjectServiceContainer.php] => <?php
144144

0 commit comments

Comments
 (0)