Skip to content

Commit b7fd926

Browse files
committed
ContainerFactory::$configFiles can contain arrays with configuration [Closes #26]
1 parent 61faeff commit b7fd926

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

src/DI/ContainerFactory.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class ContainerFactory extends Nette\Object
3232
/** @var array */
3333
public $config = array();
3434

35-
/** @var array [file, section] */
35+
/** @var array [file|array, section] */
3636
public $configFiles = array();
3737

3838
/** @var string */
@@ -71,7 +71,9 @@ protected function generateCode()
7171

7272
$code = "<?php\n";
7373
foreach ($this->configFiles as $info) {
74-
$code .= "// source: $info[0] $info[1]\n";
74+
if (is_scalar($info[0])) {
75+
$code .= "// source: $info[0] $info[1]\n";
76+
}
7577
}
7678
$code .= "\n" . $compiler->compile($config, $this->class, $this->parentClass);
7779

@@ -90,7 +92,8 @@ protected function generateConfig()
9092
$config = array();
9193
$loader = $this->createLoader();
9294
foreach ($this->configFiles as $info) {
93-
$config = Config\Helpers::merge($loader->load($info[0], $info[1]), $config);
95+
$info = is_scalar($info[0]) ? $loader->load($info[0], $info[1]) : $info[0];
96+
$config = Config\Helpers::merge($info, $config);
9497
}
9598
$this->dependencies = array_merge($this->dependencies, $loader->getDependencies());
9699

tests/DI/ContainerFactory.basic.phpt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,12 @@ $factory->class = 'My';
2525
$container = $factory->create();
2626
Assert::type($factory->class, $container);
2727
Assert::type($factory->parentClass, $container);
28+
29+
$factory->class = 'My2';
30+
$factory->config = array('parameters' => array('foo' => 'a'));
31+
$factory->configFiles = array(
32+
array(Tester\FileMock::create('parameters: {foo: b}', 'neon'), NULL),
33+
array(array('parameters' => array('foo' => 'c')), NULL),
34+
);
35+
$container = $factory->create();
36+
Assert::same(array('foo' => 'c'), $container->parameters);

0 commit comments

Comments
 (0)