Skip to content

Commit 7113e45

Browse files
committed
Compiler::addExtension() allows empty name
1 parent 035d419 commit 7113e45

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

src/DI/Compiler.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,14 @@ public function __construct(ContainerBuilder $builder = NULL)
4646

4747
/**
4848
* Add custom configurator extension.
49+
* @param string|NULL
4950
* @return static
5051
*/
5152
public function addExtension($name, CompilerExtension $extension)
5253
{
53-
if (isset($this->extensions[$name]) || isset(self::$reserved[$name])) {
54+
if ($name === NULL) {
55+
$name = '_' . count($this->extensions);
56+
} elseif (isset($this->extensions[$name]) || isset(self::$reserved[$name])) {
5457
throw new Nette\InvalidArgumentException("Name '$name' is already used or reserved.");
5558
}
5659
$this->extensions[$name] = $extension->setCompiler($this, $name);

src/DI/Extensions/ExtensionsExtension.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ class ExtensionsExtension extends Nette\DI\CompilerExtension
1919
public function loadConfiguration()
2020
{
2121
foreach ($this->getConfig() as $name => $class) {
22+
if (is_int($name)) {
23+
$name = NULL;
24+
}
2225
if ($class instanceof Nette\DI\Statement) {
2326
$rc = new \ReflectionClass($class->getEntity());
2427
$this->compiler->addExtension($name, $rc->newInstanceArgs($class->arguments));
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use Nette\DI;
6+
use Tester\Assert;
7+
8+
9+
require __DIR__ . '/../bootstrap.php';
10+
11+
12+
class FooExtension extends Nette\DI\CompilerExtension
13+
{
14+
}
15+
16+
17+
$compiler = new DI\Compiler;
18+
$compiler->addExtension(NULL, new FooExtension);
19+
$compiler->addExtension(NULL, new FooExtension);
20+
21+
Assert::count(2, $compiler->getExtensions());

0 commit comments

Comments
 (0)