CompilerExtension – jak přidat parametry z druhého neonu?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
jEhLa
Člen | 70
+
0
-

Dobrý den,
je nějaký lepší způsob jak přidat v CompilerExtension parametry z druhého neonu?

U služeb to jde:

$builder = $this->getContainerBuilder();
$config = $this->loadFromFile($configFile);

$this->compiler->parseServices($builder, $config);

Nejde to nějak podobně i u parametrů? Abych nemusel dělat:

if(isset($config['parameters'])){
	$builder->parameters = \Nette\DI\Config\Helpers::merge($builder->expand($config['parameters']), $builder->parameters);
}
David Grudl
Nette Core | 8133
+
0
-

Ovlivňovat $builder->parameters není moc dobrý nápad…

hranicka
Člen | 23
+
0
-

@jEhLa

Já jsem tohle nakonec řešil taky a taky ošklivě, voláním @internal funkce:

class DIExtension extends Nette\DI\CompilerExtension
{

	public function loadConfiguration()
	{
		$this->compiler->addConfig([
			'parameters' => [
				'migrations' => [
					$this->name => [
						__DIR__ . '/migrations',
					],
				],
			],
		]);

		// Tohle zpracuje a nastaví parametry Compiler -> Builder
		$this->compiler->processParameters();
	}

}

Nevím jestli je lepší volat interní funkci (implementační detail?)
nebo její tělo zkopírovat a napřímo nastavovat $this->getContainerBuilder()->parameters = ....