Skip to content

Commit a8c0836

Browse files
Iltar van der Bergnicolas-grekas
authored andcommitted
[DI] Minor performance tweak in PriorityTaggedServiceTrait
1 parent c090c68 commit a8c0836

File tree

5 files changed

+27
-5
lines changed

5 files changed

+27
-5
lines changed

Compiler/PassConfig.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,13 +258,13 @@ public function setRemovingPasses(array $passes)
258258
*/
259259
private function sortPasses(array $passes)
260260
{
261-
if (0 === count($passes)) {
261+
if (0 === \count($passes)) {
262262
return array();
263263
}
264264

265265
krsort($passes);
266266

267267
// Flatten the array
268-
return call_user_func_array('array_merge', $passes);
268+
return array_merge(...$passes);
269269
}
270270
}

Compiler/PriorityTaggedServiceTrait.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ private function findAndSortTaggedServices($tagName, ContainerBuilder $container
4747

4848
if ($services) {
4949
krsort($services);
50-
$services = call_user_func_array('array_merge', $services);
50+
$services = array_merge(...$services);
5151
}
5252

5353
return $services;

Tests/Compiler/PassConfigTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,20 @@ public function testPassOrdering()
3535
$this->assertSame($pass2, $passes[0]);
3636
$this->assertSame($pass1, $passes[1]);
3737
}
38+
39+
public function testPassOrderingWithoutPasses()
40+
{
41+
$config = new PassConfig();
42+
$config->setBeforeOptimizationPasses(array());
43+
$config->setAfterRemovingPasses(array());
44+
$config->setBeforeRemovingPasses(array());
45+
$config->setOptimizationPasses(array());
46+
$config->setRemovingPasses(array());
47+
48+
$this->assertEmpty($config->getBeforeOptimizationPasses());
49+
$this->assertEmpty($config->getAfterRemovingPasses());
50+
$this->assertEmpty($config->getBeforeRemovingPasses());
51+
$this->assertEmpty($config->getOptimizationPasses());
52+
$this->assertEmpty($config->getRemovingPasses());
53+
}
3854
}

Tests/Compiler/PriorityTaggedServiceTraitTest.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,13 @@ public function testThatCacheWarmersAreProcessedInPriorityOrder()
7878

7979
$this->assertEquals($expected, $priorityTaggedServiceTraitImplementation->test('my_custom_tag', $container));
8080
}
81+
82+
public function testWithEmptyArray()
83+
{
84+
$container = new ContainerBuilder();
85+
$priorityTaggedServiceTraitImplementation = new PriorityTaggedServiceTraitImplementation();
86+
$this->assertEquals(array(), $priorityTaggedServiceTraitImplementation->test('my_custom_tag', $container));
87+
}
8188
}
8289

8390
class PriorityTaggedServiceTraitImplementation

Tests/Fixtures/includes/ProjectExtension.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
<?php
22

33
use Symfony\Component\DependencyInjection\ContainerBuilder;
4-
use Symfony\Component\DependencyInjection\Definition;
54
use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
65

76
class ProjectExtension implements ExtensionInterface
@@ -12,7 +11,7 @@ public function load(array $configs, ContainerBuilder $configuration)
1211
$configs = array_filter($configs);
1312

1413
if ($configs) {
15-
$config = call_user_func_array('array_merge', $configs);
14+
$config = array_merge(...$configs);
1615
} else {
1716
$config = array();
1817
}

0 commit comments

Comments
 (0)