Využití neon balíku a php konstanty

Bohosu
Člen | 24
+
0
-

Ahoj,
rád bych neon balík využil na jedné starší, ale větší php aplikaci, která neběží na Nette. V současné době se konfigurace v té aplikaci řeší pomocí require php souborů, ve kterých je asociativní pole s konfigurací. Rád bych tuhle zrůdnost přepsal do neon souborů, ale narážím na problém, že:

  • potřebuji zachovat konfigurace ve více souborech (global.neon, override.neon), kdy override logicky doplní, resp. přepíše nadřazený global neon
  • současné php config pole v sobě využívá ohromné množství vlastních php konstant, které jsou requir-ovány před inicializací configu.

Otázka:
1) chápu dobře, že Nette/neon je jakoby „jen“ parser a že si musím napsat něco vlastního, co mi udělá merge neon souborů (merge polí, které mi vrátí Neon komponenta)?

2) jak mám zapsat do .neon souboru ty php konstanty? Nechce se mi do konfigu místo konstant dávat natvrdo hodnoty. Co byste prosím poradili? Nějak načíst neon soubor, zparsovat, nahradit konstanty za hodnoty? A jak?

současnost:
global.php

<?php
$config = [
'application' => [
	'version' => 5,
	'foo' => MY_DEFINITION::MY_FOO,
	]
];
?>

Rád bych .neon

application:
	version: 5
	foo: 'some-foo'

Díky moc :)

mkoubik
Člen | 728
+
0
-
  1. Ano, nette/neon je jen parser. Mergeování více souborů a klíčů v nich řeší až nette/di. Můžeš si ho narequirovat taky a pak použít (new Nette\DI\Config\Loader())->load('config.neon'). Pak ti to donačte i soubory z includes: a zmergeuje klíče, viz https://doc.nette.org/…onfiguration#….
  2. Konstanty se zapisují jako ::constant(MY_FOO).

Editoval mkoubik (20. 8. 2018 17:04)