Loader Config – includes nepřepíše společné klíče

Bohosu
Člen | 24
+
0
-

Ahoj,

chci ve svém projektu, který neběží v Nette, využít ke konfiguraci neon spolu s možností includes dalších .neon souborů a přepsáním existujících klíčů.

Ať dělám, co dělám, Config Loader mi pořád vrací data z původního souboru.
Tak vás poprosím o pomoc, jestli něco neustále přehlížím nebo tak něco.

Ukázka:

index.php

$loader = new Nette\DI\Config\Loader();
$data = $loader->load(__DIR__ . '/basic.neon');

basic.neon

app:
	id: 1
	something:
		- a
		- b
includes:
	- override.neon

override.neon

app:
	id: 2
	something!:
		- c
else:
	29

A čekal bych, že v proměnné $data bude:

app:
	id: 2
	something:
		- c
else:
	29

Místo toho to vrátí:

app:
	id: 1
	something:
		- c => ['_prevent_merging']
		- a
		- b
else:
	29

Tedy se nepřepíše ani app id, ani something.
Celou tu knihovnu chci využívat jako parser neon souborů s featurou includování jiných neon souborů, protože mám na projektu složitý, starý a košatý způsob includování php souborů s asociativními poli, kdy určitou chytristikou
načítám konfigy stylem:

project1.conf.php

require "parent.conf.php";
$config["id"] = 1;
$config["something"] = ["c"];

parent.conf.php

require "superparent.conf.php";
$config["else"] = 29;
...

superparent.conf.php

$config["something"] = ["a", "b"];
...

Je to z důvodů, že těch konfigurací jsou desítky v závislosti na doméně a některé mají dost společného, proto jsou v parent.conf atp, jiný projekt zase načítá pouze superparent, ale ne už parent apod.
Chci vlastně přepsat to asoc. php pole na neon, aby to bylo přehlednější :)

Díky moc! :)

David Grudl
Nette Core | 8227
+
+1
-

Priorita je obrácená, basic.neon přepisuje override.neon.

Bohosu
Člen | 24
+
0
-

Ježiš, já to celou dobu chápal opačně :( Díky moc, @DavidGrudl !

vit.peprnicek
Člen | 20
+
0
-

Možná by stálo za to změnit includes na něco jako based on, defaults from nebo inherid