File tree Expand file tree Collapse file tree 3 files changed +28
-1
lines changed
Expand file tree Collapse file tree 3 files changed +28
-1
lines changed Original file line number Diff line number Diff 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 );
Original file line number Diff line number Diff 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 ));
Original file line number Diff line number Diff line change 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 ());
You can’t perform that action at this time.
0 commit comments