Skip to content

Commit f6cd1c6

Browse files
committed
Minification of metadata: added option 'di › export › parameters'
1 parent 3e2acaa commit f6cd1c6

File tree

2 files changed

+90
-0
lines changed

2 files changed

+90
-0
lines changed

src/DI/Extensions/DIExtension.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ public function __construct(bool $debugMode = false)
3636
public $excluded = [];
3737
/** @var ?string */
3838
public $parentClass;
39+
/** @var object */
40+
public $export;
41+
};
42+
$this->config->export = new class {
43+
/** @var bool */
44+
public $parameters = true;
3945
};
4046
$this->config->debugger = interface_exists(\Tracy\IBarPanel::class);
4147
}
@@ -54,6 +60,10 @@ public function afterCompile(Nette\PhpGenerator\ClassType $class)
5460
$class->setExtends($this->config->parentClass);
5561
}
5662

63+
if (!$this->config->export->parameters) {
64+
$class->removeMethod('__construct');
65+
}
66+
5767
$initialize = $class->getMethod('initialize');
5868
$builder = $this->getContainerBuilder();
5969

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
<?php
2+
3+
/**
4+
* Test: DIExtension parameters exporting
5+
*/
6+
7+
declare(strict_types=1);
8+
9+
use Nette\DI;
10+
use Nette\DI\Extensions\DIExtension;
11+
use Tester\Assert;
12+
13+
14+
require __DIR__ . '/../bootstrap.php';
15+
16+
17+
test(function () {
18+
$compiler = new DI\Compiler;
19+
$compiler->addExtension('di', new DIExtension);
20+
$container = createContainer($compiler, '
21+
parameters:
22+
key: val
23+
24+
di:
25+
export:
26+
parameters: true
27+
');
28+
29+
Assert::same(['key' => 'val'], $container->parameters);
30+
});
31+
32+
33+
test(function () {
34+
$compiler = new DI\Compiler;
35+
$compiler->addExtension('di', new DIExtension);
36+
$container = createContainer($compiler, '
37+
parameters:
38+
key: val
39+
40+
di:
41+
export:
42+
parameters: false
43+
');
44+
45+
Assert::same([], $container->parameters);
46+
});
47+
48+
49+
test(function () {
50+
$compiler = new DI\Compiler;
51+
$compiler->setDynamicParameterNames(['dynamic']);
52+
$compiler->addExtension('di', new DIExtension);
53+
$container = createContainer($compiler, '
54+
parameters:
55+
key: %dynamic%
56+
57+
di:
58+
export:
59+
parameters: true
60+
', ['dynamic' => 123]);
61+
62+
Assert::same(['dynamic' => 123, 'key' => 123], $container->parameters);
63+
});
64+
65+
66+
test(function () {
67+
$compiler = new DI\Compiler;
68+
$compiler->setDynamicParameterNames(['dynamic']);
69+
$compiler->addExtension('di', new DIExtension);
70+
$container = createContainer($compiler, '
71+
parameters:
72+
key: %dynamic%
73+
74+
di:
75+
export:
76+
parameters: false
77+
', ['dynamic' => 123]);
78+
79+
Assert::same(['dynamic' => 123], $container->parameters);
80+
});

0 commit comments

Comments
 (0)