Skip to content

Commit 1353841

Browse files
committed
Compiler::compile() and generateCode() arguments are deprecated and compile() always returns string (BC break)
1 parent d0a8856 commit 1353841

File tree

5 files changed

+21
-12
lines changed

5 files changed

+21
-12
lines changed

src/DI/Compiler.php

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -143,18 +143,20 @@ public function getDependencies()
143143

144144

145145
/**
146-
* @return Nette\PhpGenerator\ClassType[]|string
146+
* @return string
147147
*/
148148
public function compile(array $config = NULL, $className = NULL, $parentName = NULL)
149149
{
150-
$this->config = $config ?: $this->config;
150+
if (func_num_args()) {
151+
trigger_error(__METHOD__ . ' arguments are deprecated, use Compiler::addConfig() and Compiler::setClassName().', E_USER_DEPRECATED);
152+
$this->config = func_get_arg(0) ?: $this->config;
153+
$this->className = @func_get_arg(1) ?: $this->className;
154+
}
151155
$this->processParameters();
152156
$this->processExtensions();
153157
$this->processServices();
154-
$classes = $this->generateCode($className ?: $this->className, $parentName);
155-
return func_num_args()
156-
? implode("\n\n\n", $classes) // back compatiblity
157-
: $classes;
158+
$classes = $this->generateCode();
159+
return implode("\n\n\n", $classes);
158160
}
159161

160162

@@ -212,16 +214,21 @@ public function processServices()
212214

213215

214216
/** @internal */
215-
public function generateCode($className, $parentName = NULL)
217+
public function generateCode()
216218
{
219+
if (func_num_args()) {
220+
trigger_error(__METHOD__ . ' arguments are deprecated, use Compiler::setClassName().', E_USER_DEPRECATED);
221+
$this->className = func_get_arg(0) ?: $this->className;
222+
}
223+
217224
$this->builder->prepareClassList();
218225

219226
foreach ($this->extensions as $extension) {
220227
$extension->beforeCompile();
221228
$this->dependencies[] = (new \ReflectionClass($extension))->getFileName();
222229
}
223230

224-
$classes = $this->builder->generateClasses($className, $parentName);
231+
$classes = $this->builder->generateClasses($this->className);
225232
$classes[0]->addMethod('initialize');
226233
$this->addDependencies($this->builder->getDependencies());
227234

tests/DI/Compiler.parameters.circular.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ require __DIR__ . '/../bootstrap.php';
1414
Assert::exception(function () {
1515
$loader = new DI\Config\Loader;
1616
$compiler = new DI\Compiler;
17-
$compiler->compile($loader->load('files/compiler.parameters.circular.ini'), 'Container', Nette\DI\Container::class);
17+
$compiler->addConfig($loader->load('files/compiler.parameters.circular.ini'))->compile();
1818
}, Nette\InvalidArgumentException::class, 'Circular reference detected for variables: foo, foobar, bar.');

tests/DI/DIExtension.accessors.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ services:
2323
std: stdClass
2424
', 'neon'));
2525

26-
eval($compiler->compile($config, 'Container1'));
26+
eval($compiler->addConfig($config)->setClassName('Container1')->compile());
2727

2828
$container = new Container1;
2929
Assert::type(stdClass::class, $container->std);

tests/DI/DIExtension.run.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ services:
2020
std: {class: stdClass, tags: [run]}
2121
', 'neon'));
2222

23-
eval($compiler->compile($config, 'Container1'));
23+
eval($compiler->addConfig($config)->setClassName('Container1')->compile());
2424

2525
$container = new Container1;
2626
Assert::false($container->isCreated('std'));

tests/bootstrap.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,9 @@ function createContainer($source, $config = NULL)
5959
$loader = new Nette\DI\Config\Loader;
6060
$config = $loader->load(is_file($config) ? $config : Tester\FileMock::create($config, 'neon'));
6161
}
62-
$code = $source->compile((array) $config, $class, Nette\DI\Container::class);
62+
$code = $source->addConfig((array) $config)
63+
->setClassName($class)
64+
->compile();
6365
} else {
6466
return;
6567
}

0 commit comments

Comments
 (0)