Loader Config – includes nepřepíše společné klíče
- Bohosu
- Člen | 24
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! :)
- vit.peprnicek
- Člen | 20
Možná by stálo za to změnit includes na něco jako based on, defaults from nebo inherid