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 7c3d0c7

Browse filesBrowse files
[DI] Reference instead of inline for array-params
1 parent 8bbfc96 commit 7c3d0c7
Copy full SHA for 7c3d0c7

File tree

Expand file treeCollapse file tree

10 files changed

+252
-28
lines changed
Filter options
Expand file treeCollapse file tree

10 files changed

+252
-28
lines changed

‎src/Symfony/Component/DependencyInjection/Compiler/PassConfig.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Compiler/PassConfig.php
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public function __construct()
5151
new ResolveDefinitionTemplatesPass(),
5252
new ServiceLocatorTagPass(),
5353
new DecoratorServicePass(),
54-
new ResolveParameterPlaceHoldersPass(),
54+
new ResolveParameterPlaceHoldersPass(false),
5555
new ResolveFactoryClassPass(),
5656
new FactoryReturnTypePass($resolveClassPass),
5757
new CheckDefinitionValidityPass(),

‎src/Symfony/Component/DependencyInjection/Compiler/ResolveParameterPlaceHoldersPass.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Compiler/ResolveParameterPlaceHoldersPass.php
+9-1Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@
2323
class ResolveParameterPlaceHoldersPass extends AbstractRecursivePass
2424
{
2525
private $bag;
26+
private $resolveArrays;
27+
28+
public function __construct($resolveArrays = true)
29+
{
30+
$this->resolveArrays = $resolveArrays;
31+
}
2632

2733
/**
2834
* {@inheritdoc}
@@ -55,7 +61,9 @@ public function process(ContainerBuilder $container)
5561
protected function processValue($value, $isRoot = false)
5662
{
5763
if (is_string($value)) {
58-
return $this->bag->resolveValue($value);
64+
$v = $this->bag->resolveValue($value);
65+
66+
return $this->resolveArrays || !$v || !is_array($v) ? $v : $value;
5967
}
6068
if ($value instanceof Definition) {
6169
$changes = $value->getChanges();

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

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php
+19-6Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1061,10 +1061,12 @@ private function addDefaultParametersMethod()
10611061
*/
10621062
public function getParameter($name)
10631063
{
1064-
$name = strtolower($name);
1064+
if (!(isset($this->parameters[$name]) || isset($this->loadedDynamicParameters[$name]) || array_key_exists($name, $this->parameters))) {
1065+
$name = strtolower($name);
10651066
1066-
if (!(isset($this->parameters[$name]) || array_key_exists($name, $this->parameters) || isset($this->loadedDynamicParameters[$name]))) {
1067-
throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', $name));
1067+
if (!(isset($this->parameters[$name]) || isset($this->loadedDynamicParameters[$name]) || array_key_exists($name, $this->parameters))) {
1068+
throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', $name));
1069+
}
10681070
}
10691071
if (isset($this->loadedDynamicParameters[$name])) {
10701072
return $this->loadedDynamicParameters[$name] ? $this->dynamicParameters[$name] : $this->getDynamicParameter($name);
@@ -1080,7 +1082,7 @@ public function hasParameter($name)
10801082
{
10811083
$name = strtolower($name);
10821084
1083-
return isset($this->parameters[$name]) || array_key_exists($name, $this->parameters) || isset($this->loadedDynamicParameters[$name]);
1085+
return isset($this->parameters[$name]) || isset($this->loadedDynamicParameters[$name]) || array_key_exists($name, $this->parameters);
10841086
}
10851087
10861088
/**
@@ -1580,11 +1582,22 @@ private function dumpLiteralClass($class)
15801582
*/
15811583
private function dumpParameter($name)
15821584
{
1585+
$name = strtolower($name);
1586+
15831587
if ($this->container->isCompiled() && $this->container->hasParameter($name)) {
1584-
return $this->dumpValue($this->container->getParameter($name), false);
1588+
$value = $this->container->getParameter($name);
1589+
$dumpedValue = $this->dumpValue($value, false);
1590+
1591+
if (!$value || !is_array($value)) {
1592+
return $dumpedValue;
1593+
}
1594+
1595+
if (!preg_match("/\\\$this->(?:getEnv\('\w++'\)|targetDirs\[\d++\])/", $dumpedValue)) {
1596+
return sprintf("\$this->parameters['%s']", $name);
1597+
}
15851598
}
15861599

1587-
return sprintf("\$this->getParameter('%s')", strtolower($name));
1600+
return sprintf("\$this->getParameter('%s')", $name);
15881601
}
15891602

15901603
/**

‎src/Symfony/Component/DependencyInjection/Tests/Dumper/PhpDumperTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Tests/Dumper/PhpDumperTest.php
+14Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -584,4 +584,18 @@ public function testPrivateWithIgnoreOnInvalidReference()
584584
$container = new \Symfony_DI_PhpDumper_Test_Private_With_Ignore_On_Invalid_Reference();
585585
$this->assertInstanceOf('BazClass', $container->get('bar')->getBaz());
586586
}
587+
588+
public function testArrayParameters()
589+
{
590+
$container = new ContainerBuilder();
591+
$container->setParameter('array_1', array(123));
592+
$container->setParameter('array_2', array(__DIR__));
593+
$container->register('bar', 'BarClass')
594+
->addMethodCall('setBaz', array('%array_1%', '%array_2%', '%%array_1%%'));
595+
$container->compile();
596+
597+
$dumper = new PhpDumper($container);
598+
599+
$this->assertStringEqualsFile(self::$fixturesPath.'/php/services_array_params.php', str_replace('\\\\Dumper', '/Dumper', $dumper->dump(array('file' => self::$fixturesPath.'/php/services_array_params.php'))));
600+
}
587601
}

‎src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services10.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services10.php
+6-4Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,12 @@ protected function getTestService()
8080
*/
8181
public function getParameter($name)
8282
{
83-
$name = strtolower($name);
83+
if (!(isset($this->parameters[$name]) || isset($this->loadedDynamicParameters[$name]) || array_key_exists($name, $this->parameters))) {
84+
$name = strtolower($name);
8485

85-
if (!(isset($this->parameters[$name]) || array_key_exists($name, $this->parameters) || isset($this->loadedDynamicParameters[$name]))) {
86-
throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', $name));
86+
if (!(isset($this->parameters[$name]) || isset($this->loadedDynamicParameters[$name]) || array_key_exists($name, $this->parameters))) {
87+
throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', $name));
88+
}
8789
}
8890
if (isset($this->loadedDynamicParameters[$name])) {
8991
return $this->loadedDynamicParameters[$name] ? $this->dynamicParameters[$name] : $this->getDynamicParameter($name);
@@ -99,7 +101,7 @@ public function hasParameter($name)
99101
{
100102
$name = strtolower($name);
101103

102-
return isset($this->parameters[$name]) || array_key_exists($name, $this->parameters) || isset($this->loadedDynamicParameters[$name]);
104+
return isset($this->parameters[$name]) || isset($this->loadedDynamicParameters[$name]) || array_key_exists($name, $this->parameters);
103105
}
104106

105107
/**

‎src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services12.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services12.php
+6-4Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,12 @@ protected function getTestService()
8484
*/
8585
public function getParameter($name)
8686
{
87-
$name = strtolower($name);
87+
if (!(isset($this->parameters[$name]) || isset($this->loadedDynamicParameters[$name]) || array_key_exists($name, $this->parameters))) {
88+
$name = strtolower($name);
8889

89-
if (!(isset($this->parameters[$name]) || array_key_exists($name, $this->parameters) || isset($this->loadedDynamicParameters[$name]))) {
90-
throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', $name));
90+
if (!(isset($this->parameters[$name]) || isset($this->loadedDynamicParameters[$name]) || array_key_exists($name, $this->parameters))) {
91+
throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', $name));
92+
}
9193
}
9294
if (isset($this->loadedDynamicParameters[$name])) {
9395
return $this->loadedDynamicParameters[$name] ? $this->dynamicParameters[$name] : $this->getDynamicParameter($name);
@@ -103,7 +105,7 @@ public function hasParameter($name)
103105
{
104106
$name = strtolower($name);
105107

106-
return isset($this->parameters[$name]) || array_key_exists($name, $this->parameters) || isset($this->loadedDynamicParameters[$name]);
108+
return isset($this->parameters[$name]) || isset($this->loadedDynamicParameters[$name]) || array_key_exists($name, $this->parameters);
107109
}
108110

109111
/**

‎src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services26.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services26.php
+6-4Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,12 @@ protected function getTestService()
8282
*/
8383
public function getParameter($name)
8484
{
85-
$name = strtolower($name);
85+
if (!(isset($this->parameters[$name]) || isset($this->loadedDynamicParameters[$name]) || array_key_exists($name, $this->parameters))) {
86+
$name = strtolower($name);
8687

87-
if (!(isset($this->parameters[$name]) || array_key_exists($name, $this->parameters) || isset($this->loadedDynamicParameters[$name]))) {
88-
throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', $name));
88+
if (!(isset($this->parameters[$name]) || isset($this->loadedDynamicParameters[$name]) || array_key_exists($name, $this->parameters))) {
89+
throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', $name));
90+
}
8991
}
9092
if (isset($this->loadedDynamicParameters[$name])) {
9193
return $this->loadedDynamicParameters[$name] ? $this->dynamicParameters[$name] : $this->getDynamicParameter($name);
@@ -101,7 +103,7 @@ public function hasParameter($name)
101103
{
102104
$name = strtolower($name);
103105

104-
return isset($this->parameters[$name]) || array_key_exists($name, $this->parameters) || isset($this->loadedDynamicParameters[$name]);
106+
return isset($this->parameters[$name]) || isset($this->loadedDynamicParameters[$name]) || array_key_exists($name, $this->parameters);
105107
}
106108

107109
/**

‎src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services8.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services8.php
+6-4Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,12 @@ public function isFrozen()
6464
*/
6565
public function getParameter($name)
6666
{
67-
$name = strtolower($name);
67+
if (!(isset($this->parameters[$name]) || isset($this->loadedDynamicParameters[$name]) || array_key_exists($name, $this->parameters))) {
68+
$name = strtolower($name);
6869

69-
if (!(isset($this->parameters[$name]) || array_key_exists($name, $this->parameters) || isset($this->loadedDynamicParameters[$name]))) {
70-
throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', $name));
70+
if (!(isset($this->parameters[$name]) || isset($this->loadedDynamicParameters[$name]) || array_key_exists($name, $this->parameters))) {
71+
throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', $name));
72+
}
7173
}
7274
if (isset($this->loadedDynamicParameters[$name])) {
7375
return $this->loadedDynamicParameters[$name] ? $this->dynamicParameters[$name] : $this->getDynamicParameter($name);
@@ -83,7 +85,7 @@ public function hasParameter($name)
8385
{
8486
$name = strtolower($name);
8587

86-
return isset($this->parameters[$name]) || array_key_exists($name, $this->parameters) || isset($this->loadedDynamicParameters[$name]);
88+
return isset($this->parameters[$name]) || isset($this->loadedDynamicParameters[$name]) || array_key_exists($name, $this->parameters);
8789
}
8890

8991
/**

‎src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services9_compiled.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services9_compiled.php
+6-4Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -391,10 +391,12 @@ protected function getServiceFromStaticMethodService()
391391
*/
392392
public function getParameter($name)
393393
{
394-
$name = strtolower($name);
394+
if (!(isset($this->parameters[$name]) || isset($this->loadedDynamicParameters[$name]) || array_key_exists($name, $this->parameters))) {
395+
$name = strtolower($name);
395396

396-
if (!(isset($this->parameters[$name]) || array_key_exists($name, $this->parameters) || isset($this->loadedDynamicParameters[$name]))) {
397-
throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', $name));
397+
if (!(isset($this->parameters[$name]) || isset($this->loadedDynamicParameters[$name]) || array_key_exists($name, $this->parameters))) {
398+
throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', $name));
399+
}
398400
}
399401
if (isset($this->loadedDynamicParameters[$name])) {
400402
return $this->loadedDynamicParameters[$name] ? $this->dynamicParameters[$name] : $this->getDynamicParameter($name);
@@ -410,7 +412,7 @@ public function hasParameter($name)
410412
{
411413
$name = strtolower($name);
412414

413-
return isset($this->parameters[$name]) || array_key_exists($name, $this->parameters) || isset($this->loadedDynamicParameters[$name]);
415+
return isset($this->parameters[$name]) || isset($this->loadedDynamicParameters[$name]) || array_key_exists($name, $this->parameters);
414416
}
415417

416418
/**

0 commit comments

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